977.有序数组的平方
题目链接:977. 有序数组的平方 - 力扣(LeetCode)
第一反应就是暴力解法
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums)
{
vector<int>res(nums.size(),0);
int k=nums.size()-1;
for(int i=0,j=nums.size()-1;i<=j;)
{
if(nums[i]*nums[i]<nums[j]*nums[j])
{
res[k--]=nums[j]*nums[j];
j--;
}
else
{
res[k--]=nums[i]*nums[i];
i++;
}
}
return res;
}
};
双指针没想到这个做法自己好蠢;
209.长度最小的子数组
题目链接:力扣
一开始写的错误代码,
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int res=0,count=0;
for(int i=0,j=0;i<nums.size(),j<nums.size();)
{
if(res<target)
{
res+=nums[j];
j++;
}
else if(res==target)
{
count=min(count,j-i+1);
j=i;
}
else
i++;
}
return count;
}
};
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums)
{
int res=INT32_MAX,sum=0,i=0,length=nums.size();
for(int j=0;j<nums.size();j++)
{
sum+=nums[j];
while(sum>=target)
{
length=(j-i+1);
res=res<length?res:length;
sum-=nums[i++];
}
}
return res==INT32_MAX?0:res;
}
};
59.螺旋矩阵II
题目链接:
class Solution {
public:
vector<vector<int>> generateMatrix(int n)
{
vector<vector<int>>res(n,vector<int>(n,0));
int sum=1;
int up=0,down=n-1,left=0,right=n-1;
while(true)
{
for(int i=left;i<=right;i++)
{
res[up][i]=sum;
sum++;
}
if(up++>=down)
break;
for(int i=up;i<=down;i++)
{
res[i][right]=sum;
sum++;
}
if(right--<=left)
break;
for(int i=right;i>=left;i--)
{
res[down][i]=sum;
sum++;
}
if(down--<=up)
break;
for(int i=down;i>=up;i--)
{
res[i][left]=sum;
sum++;
}
if(left++>=right)
break;
}
return res;
}
};