动态规划 思路: 参考62. 不同路径 代码: class Solution: def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int: m = len(obstacleGrid) n = len(obstac ...
分类:
其他好文 时间:
2020-06-07 15:05:47
阅读次数:
65
动态规划 思路: dp[i][j]表示走完 i,j 位置所需的最短路径,由于只能向下或者向右,所以第一行和第一列中每个值为当前值加上前一个值,即dp[0][j]=dp[0] [j]+dp[0][j-1],dp[i][0] = dp[i][0]+dp[i-1][0]。非第一行和第一列的值为当前值加上其 ...
分类:
其他好文 时间:
2020-06-07 14:57:26
阅读次数:
52
238. 除自身以外数组的乘积 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请**不要使用 ...
分类:
编程语言 时间:
2020-06-07 10:37:09
阅读次数:
49
找规律 思路: 由题意可知,由于只能向下或向右移动,所以总共只需要走(m-1)+(n-1)= m+n-2步。而只需要确定m-1步向右的步数或者确定向下的n-1步,即可确定路径,所以共有或者种可能。 代码: class Solution: def uniquePaths(self, m: int, n ...
分类:
其他好文 时间:
2020-06-06 15:37:59
阅读次数:
68
阶乘法 思路: 因为集合[1,2,3,...,n]共有n!种排列,则[1,2,3,...,n-1]有(n-1)!种排列。由此可以看出,在[1,2,3,...,n]所有的排列中,第一位有n种可能,为1--n,并且每个确定的第一位数均有(n-1)!种排列。同理,在确定第二位数的情况下,有(n-2)!种排 ...
分类:
其他好文 时间:
2020-06-06 13:04:28
阅读次数:
60
题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] class Solution { public: vector<int> spiralOrder(vecto ...
分类:
其他好文 时间:
2020-06-06 01:09:30
阅读次数:
92
遍历添加 思路: 由于原数组有序,可以遍历把要添加区间之前的区间先加入到结果中,在判断要添加的区间是否能和之前合并,接着继续遍历之后区间,如果能合并就合并区间,不能合并直接添加。合并区间方法,参考56.合并区间 代码: class Solution: def insert(self, interva ...
分类:
其他好文 时间:
2020-06-05 12:54:11
阅读次数:
47
题目 238 除自身以外的所有乘积 给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 输入: [1,2,3,4] 输出: [24,12,8,6] 提示:题目数据保证数组之中 ...
分类:
其他好文 时间:
2020-06-04 23:10:16
阅读次数:
90
排序合并 思路: 用数组res记录合并结果,先把数组intervals排序,遍历数组intervals,如果res为空或者遍历的区间左边界比res中最后一个区间的右边界值大,则将遍历的区间添加到结果中,如果遍历的区间左边界比res最后一个区间的右边界值小,则更新res最后一个区间的右边界的值。 代码 ...
分类:
其他好文 时间:
2020-06-04 13:53:30
阅读次数:
56
动态规划 思路: 由于题目只要求得到最大和,故可以遍历数组nums,遍历的同时把每个元素的值更新为当前位置到之前所能得到的最大和,遍历完成后返回数组中最大值即可。更新的动态规划转移方程为:nums[i] = nums[i] + max(nums[i-1],0) 代码: class Solution: ...
分类:
其他好文 时间:
2020-06-03 15:24:56
阅读次数:
60