代码随想录算法刷题训练营

代码随想录算法训练营day02:LeetCode(977) 有序数组的平方、LeetCode(209) 长度最小的子数组 、LeetCode(59) 螺旋矩阵II

LeetCode(977) 有序数组的平方

import java.util.Arrays;

class Solution {
    public int[] sortedSquares(int[] nums) {
        for (int nums2 = 0; nums2 < nums.length; nums2++) {
            nums[nums2]=nums[nums2]*nums[nums2];
        }
        Arrays.sort(nums);//调用数组排序方法
        //常规冒泡排序方法和选择排序方法
        return nums;

    }
}

LeetCode(209) 长度最小的子数组

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int count=nums.length;
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
            if(target<=nums[i]){
                return 1;
            }
            sum+=nums[i];    
        }
        if(sum<target){
            return 0;
        }
        //利用双指针滑动窗口解题:你定一个位置,使我到达你哪里达到最小值
        int i=0;
        int sum1=0;
       for (int j = 0; j < nums.length; j++) {
           sum1+=nums[j];
           while (sum1>=target) {
            int countflag=j-i+1;
            count=(count<countflag?count:countflag);
            sum1-=nums[i++];  
           } 
       }
        return count;
    }
}

LeetCode(59) 螺旋矩阵II

class Solution {
    public int[][] generateMatrix(int n) {
        int startX=0;
        int startY=0;
        int flag=1;
        int count=1;
        int arr[][]=new int[n][n];
        for (int i = 0; i < n/2; i++) {//通过i去控制外圈数
            //遵循左闭右开,转个完整的圈
            for(int j1=startY;j1<n-flag;j1++){
                arr[startX][j1]=count++;
            }
            for(int i1=startX;i1<n-flag;i1++){
                arr[i1][n-flag]=count++;
            }
            for(int j2=n-flag;j2>i;j2--){
                arr[n-flag][j2]=count++;
            }
            for(int i2=n-flag;i2>i;i2--){
                arr[i2][i]=count++;
            }
            startX++;
            startY++;
            flag++;    
        }
        if(n%2!=0){
            arr[n/2][n/2]=count;
        }

    return arr;
    }
}
  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值