分析将有障碍的地方路径设置为0即可class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m=obstacleGri
分析用f[i][j]表示从(1,1)到(i,j)的路径数,先初始化第一行和第一列的路径数,都只有1种走法。class Solution {public: int uniquePaths(int m, int n) { int f[110][110];//f[i][j]表示从(1,
分析所有区间都是有序的,每个区间与合并区间有三种关系:1. 在区间左边2 在区间右边3 在区间中间,即有交集class Solution {public: vector<vector<int>> insert(vector<vector<int>>
分析nums[i]是表示当前位置所能跳的最大步数,那么到达最远处之前的地方都能到达,此时再在这些位置跳过去,所以只需要看最远的位置是否能到达数组末尾。class Solution {public: bool canJump(vector<int>& nums) {
分析每遍历一层,就把这一层削去,控制边界即可实现。class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int&
分析使用快速幂做法class Solution {public: double myPow(double x, int n) { double ans=1.0; if(x==0)return 0.0; long b=n; if(b<
分析string排序后的值相同的,可以使用字符串哈希将对应的字符串加进vector中,最后遍历哈希表,得到答案class Solution {public: vector<vector<string>> groupAnagrams(vector<string>
思路class Solution {public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); for(int i=0;i<n;i++){
思路对比46题,这里有重复数字,[1,2,2]中[1,2,2]和[1,2,2]是相同的,可以将数组排序,然后遇到相同数字时,判断上一个数字是否已经用过,如果用过了,那么就跳过这次循环(相当于去重)。class Solution {public: vector<vector<int&
class Solution {public: bool flag[10]; vector<vector<int>> ans; vector<int>path; void dfs(vector<int>&nums,int