摘要:题目链接:https://leetcode.com/problems/length-of-last-word/description/ 题目大意:给出一个字符串最后一个单词的长度。 法一:模拟,代码如下(耗时6ms): 1 public int lengthOfLastWord(String s)
阅读全文
摘要:题目链接:https://leetcode.com/problems/container-with-most-water/description/ 题目大意:给出一串数组(a1, a2, a3, ...an),表示坐标(i, ai),同样表示一条直线是从(i, 0)到(i, ai),从中选出两条直线
阅读全文
摘要:题目链接:https://leetcode.com/problems/maximal-rectangle/description/ 题目大意:给出一个二维矩阵,计算最大的矩形面积(矩形由1组成)。例子如下: 法一:将每一行的数据都看成是一个直方图,而每个直方图的高度都是由上一行得到的,例如,上述例子
阅读全文
摘要:题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 题目大意:与84题做比较,在直方图中计算其蓄水能力。例子如下: 法一(借鉴):暴力,还是很难想到的,需要推理数学功底。因为这里暴力的前提条件是:计算每个点的蓄水能力
阅读全文
摘要:题目链接:https://leetcode.com/problems/largest-rectangle-in-histogram/description/ 题目大意:在直方图中找出最大的矩形面积。例子如下: 法一:暴力,无任何优化,超时了。对于每个高度,分别向左和向右查找能到达的最远下标(在目前的
阅读全文
摘要:题目链接 题目大意:从左上角到右下角,每一个格子都有各自的权值,如果权值为负,则当到达时,要失血;如果权值为正,则当到达时,要加血。当到达某个格子时,当前血量<=0,则死亡,到达不了右下角,所以此时要计算从左上角到右下角,初始应该最少携带多少血(即经过所有路径后所计算出的值),才不会死亡,能正常到达
阅读全文
摘要:题目链接:https://leetcode.com/problems/minimum-path-sum/description/ 题目大意:从左上到右下的路径中,找出路径和最小的路径(与62,63题相联系)。 法一:dfs,果然超时,无剪枝。代码如下: 1 public int minPathSum
阅读全文
摘要:题目链接 题目大意:与62题类似,只是这个题中间有障碍。 法一:dfs,依旧超时。代码如下: 1 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 2 boolean vis[][] = new boolean[obstacleG
阅读全文
摘要:题目链接 题目大意:给一个m*n的方格,从左上角走到右下角,中间无任何障碍,问有多少种走法。 法一:DFS,超时,简单模板深搜,无任何剪枝,结果一半的数据超时。代码如下: 1 public int uniquePaths(int m, int n) { 2 int f[][] = {{0, 1},
阅读全文
摘要:题目链接:https://leetcode.com/problems/palindrome-number/description/ 题目大意:给定一个int范围的数字,判断是否是回文(要求不要额外开辟空间)。 法一:将int数字转为string,直接做。代码如下: 1 public boolean
阅读全文
摘要:题目链接:https://leetcode.com/problems/integer-break/description/ 题目大意:给定一个自然数,将其分解,对其分解的数作乘积,找出最大的乘积结果。例子如下: 法一(借鉴):dp,一维dp,dp[i]表示i的最大分解结果的乘积,而dp[5]可以dp
阅读全文
摘要:题目链接:https://leetcode.com/problems/edit-distance/description/ 题目大意:找出两个字符串之间的编辑距离(每次变化都只消耗一步)。 法一(借鉴):经典dp。代码如下(耗时15ms): 1 //dp公式:dp[i][j]表示第一个字符串前i个字
阅读全文
摘要:题目链接:https://leetcode.com/problems/longest-palindromic-subsequence/description/ 题目大意:找出最长回文子序列(不连续),第5题是最长回文子串。 法一(借鉴):dp,与5题,最长回文子串进行比较,这个dp更难一点。代码如下
阅读全文
摘要:题目链接:https://leetcode.com/problems/longest-palindromic-substring/description/ 题目大意:找出最长回文子字符串(连续)。 法一:暴力,三层for循环,超时。代码如下: 1 public String longestPalin
阅读全文
摘要:题目链接:https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/ 题目大意:给出所给数字所对应字母的所有组合字符串。例子如下: 解法一:深搜,没遇到一个数字,就dfs一次它所对应的字母,然后再回
阅读全文
摘要:题目链接:https://leetcode.com/problems/sudoku-solver/description/ 题目大意:数独。要求:每行每列、每个小3*3方块都是1-9的数,且不重复。 解法一:深搜。要注意细节:java传数组是地址,不是传值,每一次的改变都是在原数组上进行的。代码如下
阅读全文
摘要:题目链接:https://leetcode.com/problems/search-insert-position/description/ 题目大意:一串升序数组和target,如果在数组中能找到target,则返回下标值;如果找不到,则返回应插入的位置下标值。 解法一:利用二分查找,查找是否有t
阅读全文
摘要:题目链接 题目大意:找出一串升序数组中target值的起始下标和结束下标值,如果不存在则返回{-1,-1}。 解法一:用二分查找,找到数组中的target,然后找其左边和右边的target下标值。代码如下(耗时11ms): 1 public int[] searchRange(int[] nums,
阅读全文
摘要:题目链接:https://leetcode.com/problems/search-a-2d-matrix-ii/description/ 题目大意:一个矩阵,每行从左到右,数值以升序排列;每列从上到下,数值以升序排列。从这个矩阵中找到是否有target数值存在,如果有返回true,否则返回fals
阅读全文
摘要:题目链接:https://leetcode.com/problems/search-a-2d-matrix/description/ 题目大意:一个矩阵,从左到右有序排列(未给升序或降序),从上到下,从小到大排列。给出一个target值,在这个矩阵中找找是否有该值,如果有返回true,否则返回fal
阅读全文