Day02 数组part02| LeetCode 209. 长度最小的子数组,59. 螺旋矩阵 II
长度最小的子数组——滑动窗口
- 滑动窗口
- 如何移动起始位置
- 本质思想:双指针
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int realRes=nums.length+1;//最终结果的长度
int sum=0;//滑动窗口的和
int i=0;//滑动窗口的起始位置
int length=0;//滑动窗口的长度
for(int j=0;j<nums.length;j++)//j表示结束位置
{
sum+=nums[j];
while(sum>=target)
{
length=(j-i+1);
realRes=realRes<length?realRes:length;
sum-=nums[i++];//滑动窗口的和减去起始位置的值,同时起始位置向后移动
}
}
if(realRes== nums.length+1)//没有符合条件的子序列
{
return 0;
}
return realRes;
}
}
螺旋矩阵
-
遵循循环不变量原则
-
每条边的处理规则:左闭右开?左闭右闭
-
循环结束 n/2:要转n/2个圈,如果n为奇数的话,则对最后一个数作特殊处理
class Solution {
public int[][] generateMatrix(int n) {
// 左闭右开
int [][] result=new int[n][n];
int startX=0,startY=0;//每一圈的起始位置
int offset=1;
int count=1;
int loop=1;//当前圈数
int i,j;
while(loop<=n/2)
{
for( j=startY;j<n-offset;j++)
{
result[startX][j]=count++;
}
for( i=startX;i<n-offset;i++)
{
result[i][j]=count++;
}
for(;j>startY;j--)
{
result[i][j]=count++;
}
for(;i>startX;i--)
{
result[i][j]=count++;
}
startX++;
startY++;
offset++;
loop++;
}
if(n%2!=0)//奇数
{
result[startX][startY]=count;
}
return result;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端