Leetcode977:有序数组的平方
-
题目:
- 给你一个按 非递减顺序 排序的整数数组
nums ,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 -
思路:数组快慢指针 -
代码如下: -
解法1:使用数组排序函数
class Solution {
public int[] sortedSquares(int[] nums) {
int n = nums.length;
for(int i =0; i < n; i++){
nums[i] = nums[i]*nums[i];
}
Arrays.sort(nums);
return nums;
}
}
class Solution {
public int[] sortedSquares(int[] nums) {
int n = nums.length;
int[] res = new int[n];
int slow = 0;
int fast = n-1;
int k = n-1;
while(slow <= fast){
//从大到小收集平方后的数据
if(nums[slow]*nums[slow] > nums[fast]*nums[fast]){
res[k--]= nums[slow]*nums[slow];
slow++;
}else {
res[k--] = nums[fast]*nums[fast];
fast--;
}
}
return res;
}
}
|