1. 程式人生 > 其它 >力扣977題(有序陣列的平方)

力扣977題(有序陣列的平方)

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; } }