算法训练营Day2(数组)

本文介绍了LeetCode中的四个编程题目,包括使用双指针优化的`sortedSquares`、生成螺旋矩阵的方法、以及涉及滑动窗口的`minSubArrayLen`问题,展示了Python中的数组操作和迭代逻辑。
摘要由CSDN通过智能技术生成

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台力扣977 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒:非递减序列:就是减少,但不是递减,存在相等

双指针

class Solution {
    public int[] sortedSquares(int[] nums) {
        int n=nums.length;
        int l=0;
        int r=n-1;
        int []result=new int[n];
        int index=n-1;
        while (l<=r){
            if(nums[l]*nums[l]<=nums[r]*nums[r]){
                result[index]=nums[r]*nums[r];
                index-=1;
                r-=1;
            }
            else{
                result[index]=nums[l]*nums[l];
                index-=1;
                l+=1;
            }
        }
        return result;
    }
}

力扣59 螺旋矩阵||力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒:多层for循环,关键在于转圈的逻辑,二分法中提到的区间定义

class Solution {
    public int[][] generateMatrix(int n) {
        int nums [][]=new int[n][n];
        int loop=1;
        int set=1;
        int sx=0;
        int sy=0;
        int count=1;
        int i,j;
        while (loop<=n/2){
            for (j=sy;j<n-set;j++){
                nums[sx][j]=count++;
            }
            for (i=sx;i<n-set;i++){
                nums[i][j]=count++;
            }
            for (;j>sx;j--){
                nums[i][j]=count++;
            }
            for (;i>sx;i--){
                nums[i][j]=count++;
            }
            sx++;
            sy++;
            loop++;
            set++;
        }
        if (n%2==1 ){
            nums[sx][sy]=count;
        }
        return nums;
    }
}

力扣209  力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

注意:zz+=1所放置的位置

双指针

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int result=Integer.MAX_VALUE;
        int sum=0;
        int l=0;
        int r=0;
        int n=nums.length;
        while (r<n){
            sum+=nums[r];
            while(sum>=target){
                result=Math.min(result,r-l+1);
                sum-=nums[l];
                l+=1;
            }
            r+=1;
        }
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}

总结:

把动画记在脑子里

1.学到数组和二维数组的定义 

2.转圈循环及变量随着迭代

3.无穷大: Integer.MAX_VALUE

4. 逗号判断句

5.滑动窗口 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Best,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值