问题描述
给你一个按 非递减顺序 排序的整数数组
nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
问题分析:
既然给定的是一个 非递减顺序的数组
我们可以使用双指针 , 一个指向左边,一个指向右边,比较两边平方后的大小。
哪个大,就把那个数放到当前数组的后面
i--;
即可实现平方后数组 非递减。
代码实现
class Solution {public int[] sortedSquares(int[] nums) {int right=nums.length-1;int left=0;int[] num = new int[nums.length];int i=num.length-1;while(left<=right){if(nums[left]*nums[left]>nums[right]*nums[right]){//left指向的数值平方之后数值大num[i]=nums[left]*nums[left];i--;left++;}else{num[i]=nums[right]*nums[right];i--;right--;}}return num;}
}