代码随想录算法训练营第二天| LeetCode 977.有序数组的平方、209.长度最下的子数组、59.螺旋矩阵

977. 有序数组的平方 - 力扣(LeetCode)

  • 暴力解法
class Solution {
public:
    vector sortedSquares(vector& nums) {
        for(int i=0;i
  • 双指针
class Solution {
public:
    vector sortedSquares(vector& nums) {
        vector arr(nums.size());
        int k=nums.size()-1;
        for(int i=0,j=nums.size()-1;i<=j;){
            if(pow(nums[i],2)

209. 长度最小的子数组 - 力扣(LeetCode)

  • 前缀和
class Solution {
public:
    int minSubArrayLen(int target, vector& nums) {
       int res=INT_MAX;
        vector s(nums.size()+1,0);
        for(int i=1;i=target){
                res=min(end-start+1,res);
                start++;
            }else{
                end++;
            }
        }
        return res==INT_MAX ? 0 : res;
    }
};
  • 双指针
class Solution {
public:
    int minSubArrayLen(int target, vector& nums) {
      int res=INT_MAX;
      int start=0;
      int sum=0;
      for(int end=0;end=target){
              res=min(res,end-start+1);
              sum-=nums[start++];
          }
      }
      return res==INT_MAX ? 0:res;
    }
};

59. 螺旋矩阵 II - 力扣(LeetCode)

class Solution {
public:
    vector> generateMatrix(int n) {
        vector> matrix(n,vector(n));
        int left=0;
        int right=n-1;
        int top=0;
        int bottom=n-1;
        int count=1;

        while(left<=right&&top<=bottom){
            //左到右
            for(int i=left;i<=right;i++){
                matrix[top][i]=count++;
            }
            top++;
            //上到下
            for(int i=top;i<=bottom;i++){
                matrix[i][right]=count++;
            }
            right--;
            //右到左
            for(int i=right;i>=left&&bottom>=top;i--){
                matrix[bottom][i]=count++;
            }
            bottom--;
            //下到上
            for(int i=bottom;i>=top&&left<=right;i--){
                matrix[i][left]=count++;
            }
            left++;
        }
        return matrix;
    }
};

你可能感兴趣的:(算法,leetcode,矩阵)