977、有序数组的平方
重点:平方后最大数只能出现在两边
-
- 暴力法:for循环平方后,进行排序
-
- 双指针:双指针指向两边,哪个大就平方后放入新数组(倒着放入)
方法一:暴力法
略
方法二:双指针法
public int[] sortedSquares(int[] nums) {
int left = 0, right = nums.length - 1;
int[] res = new int[nums.length];
int index = nums.length - 1;
while (left <= right) { //需要判断最中间的数字
if (nums[left] * nums[left] > nums[right] * nums[right]) { //左右两边那边大
res[index--] = nums[left] * nums[left]; //大的放入结果
left++;//改变索引位置
} else {
res[index--] = nums[right] * nums[right];
right--;
}
}
return res;
}