1.螺旋矩阵II
这道题就是把按顺序排列的矩阵依次计数就行了
c++
注意整个螺旋把i++和i–不要搞混了
对了 还要注意二维数组的长度定义
vector<vector> res (n,vectorn)
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int c=1;
int left=0;
int right=n-1;
int up=0;
int down=n-1;
vector<vector<int>> res(n,vector<int>(n));
while(c<=n*n){
for(int i=left;i<=right;i++) {
res[up][i]=c++;
}
for(int i=up+1;i<=down;i++){
res[i][right]=c++;
}
for(int i=right-1;i>=left;i--){
res[down][i]=c++;
}
for(int i=down-1;i>left;i--){
res[i][left]=c++;
}
left++;
right--;
up++;
down--;
}
return res;
}
};
2.合并区间
我感觉按照插入区间那道题的思路做没问题啊
你看 这个是我写的 不知道有啥大问题
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
int len=intervals.size();
vector<vector<int>>res;
int i=0;
for(int i=0;i<len;i++){
if(i=len-1){res.push_back(intervals[i]);
break;}
if(intervals[i][1]<intervals[i+1][0]){
res.push_back(intervals[i]);
}
if(intervals[i][1]>=intervals[i+1][0]){
int start =min(intervals[i][0],intervals[i+1][0]);
int end=max(intervals[i][1],intervals[i+1][1]);
vector<int>cur(2);
cur[0]=start;
cur[1]=end;
res.push_back(cur);
i++;
}
}
return res;
}
};