有序数组的平方

144 阅读1分钟

有序数组的平方

977 有序数组的平方

双指针法:

class Solution {
    public int[] sortedSquares(int[] nums) {
        int k = nums.length - 1;
        int [] arry = new int[nums.length];
        int i = 0;
        int j = nums.length - 1;
        //有序数组,只不过负数的平方后可能会变成比中间值平方大,因此数组元素平方后,呈现中间小两边大,要求平方后数组有序,可使用双指针方法进行排序。
        // i==j是为了处理最后两个元素的比较
        while(i <= j) {
            if (nums[i] * nums[i] > nums[j] * nums[j]) {
                arry[k--] = nums[i] * nums[i];
                i ++;
            }else {
                arry[k--] = nums[j] * nums[j];
                j--;
            }
        }
        return arry;
    }
}