给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
class Solution {
public int[] sortedSquares(int[] nums) {
int left = 0;
int right = nums.length - 1;
int[] result = new int[nums.length];
int index = nums.length - 1;
while(left <= right){
if(nums[left] * nums[left] < nums[right] * nums[right]){
result[index] = nums[right] * nums[right];
right--;
index--;
}else{
result[index] = nums[left] * nums[left];
left++;
index--;
}
}
return result;
}
}
class Solution {
public int[] sortedSquares(int[] nums) {
int[] ans = new int[nums.length];
for (int i = 0; i < nums.length; ++i) {
ans[i] = nums[i] * nums[i];
}
Arrays.sort(ans);
return ans;
}
}
复杂度分析
时间复杂度:O(nlogn),其中 n 的长度。
空间复杂度:O(logn)。除了存储答案的数组以外,我们需要 O(logn)栈空间进行排序。