977. 有序数组的平方 - 力扣(LeetCode)
方法一:暴力循环
先遍历所有的数,然后用Sort排序
class Solution {public int[] sortedSquares(int[] nums) {int[] result = new int[nums.length];for (int i = 0; i < nums.length; i++) {result[i] = nums[i] * nums[i];}Arrays.sort(result);return result;}
}
方法二 双指针
因为原数组是有顺序的,利用双指针,判断两个数的大小,放入新的数组即可
class Solution {public int[] sortedSquares(int[] nums) {int[] result = new int[nums.length];int l = 0;int r = nums.length - 1;int index = nums.length-1;while (l <= r) {if (nums[r] * nums[r] >= nums[l] * nums[l]){result[index] = nums[r] * nums[r];r--;}else{result[index] = nums[l] * nums[l];l++;}index--;}return result;}
}