977.有序数组的平方
文章讲解:有序数组的平方
视频讲解:有序数组的平方
进度:完成,不会想到
代码:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int leftindex=0;
int rightindex=nums.size()-1;
vector <int> newnums(nums.size(),0);
int k=nums.size()-1;
while(leftindex<=rightindex)
{
if((nums[leftindex]*nums[leftindex])>(nums[rightindex]*nums[rightindex]))
{
newnums[k--]=nums[leftindex]*nums[leftindex];
leftindex++;
}
else
{
newnums[k--]=nums[rightindex]*nums[rightindex];
rightindex--;
}
}
return newnums;
}
};
思路:
最大的值在两边,如果左边比右边大,左边指针右移动,并且将该值赋值给新数组下标k所对应的位置。
如果左边比右边小,右边指针左移动,并且将该值赋值给新数组下标k所对应的位置。

209.长度最小的子数组
文章讲解:长度最小的子数组
视频讲解:长度最小的子数组
进度:完成,不会想到
代码:
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int sum=0;
int i=0;
int sumL=0;
int result=INT32_MAX;;
for(int j=0;j<nums.size();j++)
{
sum+=nums[j];
while(sum>=target){
sumL=j-i+1;
sum=sum-nums[i];
i++;
result=min(sumL,result);
}
}
return result == INT32_MAX ? 0 : result;
}
};
思路:
j表示终止位置,当区间大于等于s时候,就让起始位置的后移动
// 如果result没有被赋值的话,就返回0,说明没有符合条件的子序列

59.螺旋矩阵(||)
文章讲解:螺旋矩阵
视频讲解:螺旋矩阵
进度:完成,不会,左闭右开,循环不变量
代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n,vector<int>(n,0));
int off=1;
int startx,starty=0;
int count=1;
int i,j;
int loop=n/2;
while(loop--){
for(j=starty;j<n-off;j++)
matrix[startx][j]=count++;
for(i=startx;i<n-off;i++)
matrix[i][j]=count++;
for(;j>starty;j--)
matrix[i][j]=count++;
for(;i>startx;i--)
matrix[i][j]=count++;
off++;
startx++;
starty++;
}
if(n%2==1)
matrix[n/2][n/2]=count++;
return matrix;
}
};
思路:
就左闭右开,一圈圈循环,有n/2圈,定义每圈的startx以及starty,还有距离边的具体,起始是 1

数组总结

本文介绍了如何解决三个编程题目:有序数组的平方计算、长度最小的子数组和螺旋矩阵生成。通过代码示例展示了思路和实现方法,适用于学习者提升算法技能。

被折叠的 条评论
为什么被折叠?



