算法刷题面试算法leetcode977 有序数组的平方
Chen BY双指针+归并排序
时间复杂度:O(n)
空间复杂度:O(1) 除了存储答案的数组以外,我们只需要维护常量空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| var sortedSquares = function(nums) { let middle = -1 for (let i = 0; i < nums.length; i++) { if (nums[i] < 0) { middle = i } } let left = middle let right = middle + 1 let arr = [] while (left > -1 || right < nums.length) { console.log('left', left, right) if (left < 0) { arr.push(nums[right] * nums[right]) right++ } else if (right === nums.length) { arr.push(nums[left] * nums[left]) left-- } else if (nums[left] * nums[left] > nums[right] * nums[right]) { arr.push(nums[right] * nums[right]) right++ } else { arr.push(nums[left] * nums[left]) left-- } } return arr };
|