04.Java物件和類
阿新 • • 發佈:2022-05-04
有序陣列的平方
977. 有序陣列的平方
給你一個按 非遞減順序 排序的整數陣列 nums
,返回 每個數字的平方 組成的新陣列,要求也按 非遞減順序 排序。
方法1:暴力排序
每個數平方之後,排個序
- 複雜度:
- 時間複雜度O(n + nlogn)
方法2: 雙指標法
-
思路:
- 左右兩個指標,對比平方數的大小,將更大的數的平方填入結果陣列
- 繼續對比,迴圈填入結果
- 複雜度:
- 時間複雜度O(N),每個元素在滑動窗後進來操作一次,出去操作一次,每個元素都是被被操作兩次,所以時間複雜度是 2 × n 也就是O(n)
- 空間複雜度O(1),結果陣列
class Solution { public int[] sortedSquares(int[] nums) { //雙指標,左右平方對比,按順序排列進陣列 int n = nums.length; int left = 0, right = n - 1, i = n - 1; int[] result = new int[n];//建立放置排序結果的陣列 while (left <= right) { if (nums[left] * nums[left] < nums[right] * nums[right]) { result[i] = nums[right] * nums[right]; right--;//右指標向左 i--; } else { result[i] = nums[left] * nums[left]; left++;//左指標向右 i--; } } return result; } }