3.977有序数组的平方

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

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
//双指针
class Solution {
    public int[] sortedSquares(int[] nums) {
        int left = 0;
        int right = nums.length-1;
        int[] result = new int[nums.length];
        int index = result.length - 1;
        while(left <= right){
            if(nums[left]*nums[left] > nums[right]*nums[right]){
                result[index--] = nums[left]*nums[left];
                ++left;
            }else{
                result[index--] = nums[right]*nums[right];
                --right;
            }
        }
        return result;
    }
}

总结:左右各一个指针,同时索引初始位置在最后一位,比较两个位置平方后的大小,哪个大就把哪个位置的数放在新数组的索引位置,并且索引向前移动。哪个数使用了,对应位置就移动。

心得:要注意使用while循环,不要只想着用for

注意:本题创建数组

int[] result = new int[nums.length];
posted @ 2022-10-11 22:25  啦啦米老鼠  阅读(17)  评论(0)    收藏  举报