209.长度最小的数组
题目链接https://leetcode.cn/problems/minimum-size-subarray-sum/
这里的i代表起始位置,j代表的终止位置
最开始没懂,因为觉得每次sum>=s的数组进行i++,那么在这个符合条件的数组后面就不会被计算到,后面发现外层还有一个for循环是控制j的,那么就相当于把每一个sum>=s的数组长度都用result来记录下来了
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int i=0;
int sum=0;
int result=INT32_MAX;
for(int j=0;j<nums.size();j++){
sum+=nums[j];
while(sum>=target){
int len=j-i+1;
result=result<len?result:len;
sum-=nums[i++];
}
}
if(result==INT32_MAX){
return 0;
}
else
return result;
}
};
59、螺旋矩阵
题目链接https://leetcode.cn/problems/spiral-matrix-ii/description/
vector<int>result(n,0) //这个是代表创建一个名叫result的一维数组,初始值都设置为0,数组的大小是n
vector<vector<int>>>result(n,vecor<int>(n,0))这个vector<vector<int>>>result代表创建一个result二维数组,括号里第一个逗号前面是代表二维数组的行,逗号后面代表二维数组的列,赋值为0.
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>>nums(n,vector<int>(n,0));
int startx=0,starty=0;//下标是从0开始的
int offset=1;
int count=1;
int m=n/2;
int mid=n/2;所以如果3×3矩阵最中间的下标就是1,1
while(m--){
int i,j;
for(j=starty;j<n-offset;j++){
nums[startx][j]=count++;//在最后把i设置为startx,每一行要进行变化
}
for(i=startx;i<n-offset;i++){
nums[i][j]=count++;//这里的j为n-offset不变了,不要设置为starty
}
for(;j>starty;j--){
nums[i][j]=count++;
}
for(;i>startx;i--){
nums[i][j]=count++;
}
startx++;
starty++;
offset++;
}
if(n%2==1){nums[mid][mid]=count++;}//如果是奇数的话就把中间的数单独设置一下
return nums;
}
};