文章链接:
视频链接:
今天都是双指针 终止位置收集,起始位置判断不满足条件 移动index i
59 双指针可以1维也可以二维
代码
977
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int k = nums.size()-1;
vector<int>res(nums.size());
for(int i = 0,j =nums.size()-1;i<=j;){
if(nums[i]*nums[i]>nums[j]*nums[j]){
res[k]=nums[i]*nums[i];
i++;
}else{
res[k]=nums[j]*nums[j];
j--;
}
k--;
}
return res;
}
};
209
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int i = 0;
int sum = 0;
int resultl = INT_MAX;
for(int j = 0;j<nums.size();j++){
sum +=nums[j];
while(sum>=target){
// pointer
int length = j-i+1;
resultl = min(length,resultl);
sum-=nums[i];
i++;
}
}
return resultl==INT_MAX?0:resultl;
}
};
59 左关右开
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;
int i,j;
while(loop--){
i = startX;
j = startY;
// from left to right
for(j;j<n-offset;j++){
res[i][j]=count++;
}
// from upperright to bottomRight
for(i;i<n-offset;i++){
res[i][j] = count++;
}
// from bottomright to bottomLeft
for(;j>startY;j--){
res[i][j] = count++;
}
// from bottomLeft to upperLeft
for(;i>startX;i--){
res[i][j] = count++;
}
startX++;
startY++;
offset++;
}
if(n%2==1){
res[mid][mid] =count;
}
return res;
}
};