【LeetCode】977. 有序数组的平方(Java)

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

解法一

遍历排序

class Solution {
    public int[] sortedSquares(int[] A) {
        //遍历平方
        for (int i = 0; i < A.length; i++) {
            A[i] *= A[i];
        }
        //排序
        Arrays.sort(A);
        return A;
    }
}

【LeetCode】977. 有序数组的平方(Java)_第1张图片

解法二

双指针

class Solution {
    public int[] sortedSquares(int[] A) {
        //双指针
        int[] arr = new int[A.length];

        int left = 0, right = A.length - 1;
        int index = arr.length - 1;     //arr数组的下标
        while (left <= right) {
            int leftTemp = A[left] * A[left];
            int rightTemp = A[right] * A[right];
            
            //如果左指针指向的平方大于右指针的平方,先放到arr数组里,每次只能有一个指针指向的平方放到数组里
            if (leftTemp > rightTemp) {
                arr[index] = leftTemp;
                left++;
            } else {
                arr[index] = rightTemp;
                right--;
            }
            index--;
        }
        return arr;
    }
}

【LeetCode】977. 有序数组的平方(Java)_第2张图片

你可能感兴趣的:(LeetCode,leetcode,java)