209.长度最小的子数组
● 今日学习的文章链接和视频链接
文章:代码随想录
视频:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili
● 自己看到题目的第一想法
没有什么想法。。
● 看完代码随想录之后的想法
推荐看文章中的动画,感觉比视频更好理解。
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int result = INT32_MAX;
int sum = 0;//滑动窗口中的数值和
int i = 0;//滑动窗口起始
int subL = 0;//滑动窗口长度
for(int j = 0;j < nums.size();j++){
sum += nums[j];
while(sum >= target){
subL = (j - i + 1);
result = result < subL ? result : subL;
sum -= nums[i++];//这句话需要理解
}
}
return result == INT32_MAX ? 0:result;
}
};
● 自己实现过程中遇到哪些困难
首先不知道怎么设int型的max值。
代码中标注的那句代码要再好好理解一下。
● 今日收获,记录一下自己的学习时长
1h
59.螺旋矩阵
● 今日学习的文章链接和视频链接
文章:代码随想录
视频:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili
● 自己看到题目的第一想法
懵。。。
● 看完代码随想录之后的想法
左闭右开,统一使用一个规则。
好长好复杂,,自己敲暂时是敲不出来,努力多看几遍多理解吧。
● 自己实现过程中遇到哪些困难
对vector语法不熟悉,学习用vector创建二维数组。
前两天太困了,今天重看一遍还挺好理解的。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n,0));
int startx = 0,starty = 0;
int loop = n / 2;//每圈循环次数
int mid = n / 2;//矩阵中心,奇数的话需要单独求一下中心值
int count = 1;//赋值用
int offset = 1;//控制每条边遍历时的长度,转完一圈就-1
int i,j;
while(loop --){
i = startx;
j = starty;
for(j;j<n-offset;j++){
res[i][j] = count++;
}
for(i;i<n-offset;i++){
res[i][j]=count++;
}
for(j;j>starty;j--){
res[i][j]=count++;
}
for(i;i>startx;i--){
res[i][j]=count++;
}
startx++;
starty++;//转完一圈,起始位置都要+1
offset++;
}
if(n%2){
res[mid][mid]=count;
}
return res;
}
};
● 今日收获,记录一下自己的学习时长
1h