美文网首页代码思想录
代码随想录算法训练营第二天| 977. 有序数组的平方、209.

代码随想录算法训练营第二天| 977. 有序数组的平方、209.

作者: zhk779 | 来源:发表于2023-12-13 20:14 被阅读0次

977. 有序数组的平方

代码随想录 (programmercarl.com)
本题要解决的核心问题在于,虽然数组是有序排列的,但是由于存在负数,如果求平方并不能确定其位置,所以还是需要使用到双指针,另外,由于结果要求升序排列,在填写输出数组时还要从后往前填

class Solution {
    public int[] sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        int left = 0, right = nums.length - 1;
        int res_index=nums.length - 1;  //从后往前填写
        while (left <= right) {
            if(nums[left] * nums[left] <= nums[right] * nums[right]){
                result[res_index--] = nums[right] * nums[right];
                right--;
            } else {
                result[res_index--] = nums[left] * nums[left];
                left++;
            }
        }

        return result;
    }
}

209. 长度最小的子数组

代码随想录 (programmercarl.com)
此题依然是双指针来解决,主要思想在于快指针探路,慢指针追赶

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int fast = 0, slow = 0;
        int result = Integer.MAX_VALUE;
        int sum = 0;

        while (fast < nums.length) {
            sum += nums[fast++];
            while (sum >= target) {
                result = (fast - slow) < result ? (fast - slow) : result;
                sum -= nums[slow++];
            }
        }
        if (result == Integer.MAX_VALUE) return 0;
        return result;
         
    }
}

59. 螺旋矩阵 II

代码随想录 (programmercarl.com)
着重点在于循环条件以及对于奇数的处理

class Solution {
    public int[][] generateMatrix(int n) {
        int nsquer = n * n;
        int[][] result = new int[n][n];
        int i = 0, j = 0;
        int start = 0;
        int insert = 1;
        int loop = 0;

        while (loop++ < n/2) {  //循环条件
            i = start;
            j = start;

            for ( ; j < n - loop; j++) {
                result[i][j] = insert++;
            }

            for ( ; i < n - loop; i++) {
                result[i][j] = insert++;
            }

            for ( ; j >= loop; j--) {
                result[i][j] = insert++;
            }
        
            for ( ; i >= loop; i--) {
                 result[i][j] = insert++;
            }
            
            start++;
        }

        if (n % 2 == 1) { // n为奇数的处理
            result[n/2][n/2] = insert;
        }
        
        return result;
    }
}

相关文章

  • 977. 有序数组的平方

    //977. 有序数组的平方https://leetcode-cn.com/problems/squares-of...

  • 代码随想录算法训练营|第二天977.有序数组的平方 ,209.长

    977、有序数组的平方 题目建议: 本题关键在于理解双指针思想 题目链接:https://leetcode.cn/...

  • 61.有序数组的平方

    day13: 977. 有序数组的平方[https://leetcode-cn.com/problems/squa...

  • 第 2 天 双指针

    977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组...

  • ARTS Week 01

    Algorithm 题目 977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的...

  • 977. 有序数组的平方

    977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺...

  • 977. 有序数组的平方

    【题目描述】给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 【示...

  • 977. 有序数组的平方

    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入...

  • 977.有序数组的平方

    题目 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1:...

  • LeetCode 977. 有序数组的平方

    题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 ...

网友评论

    本文标题:代码随想录算法训练营第二天| 977. 有序数组的平方、209.

    本文链接:https://www.haomeiwen.com/subject/taqigdtx.html