力扣977題(有序陣列的平方)
阿新 • • 發佈:2021-10-09
977、有序陣列的平方
基本思想:
雙指標法
左右指標
具體實現:
1、陣列是有序的,但是負數平方後可能會變大
2、陣列平方後的最大值在陣列的最右端或者最左端
3、left指向陣列起始位置,right指向陣列終止位置
4、定義一個和原始陣列一樣大的新陣列result
5、定義一個指標指向result的終止位置
6、如果nums【left】的平方小於nums【right】的平方,result【index--】 = nums【right】的平方
7、right往左移,left不動
程式碼:
class Solution { public int[] sortedSquares(int[] nums) {int right = nums.length -1; int left = 0; int[] result = new int[nums.length]; int index = result.length - 1; while (left <= right) { if (nums[left] * nums[left] > nums[right] * nums[right]){ result[index--] = nums[left] * nums[left]; left++; } else{ result[index--] = nums[right] * nums[right]; right--; } } return result; } }