每日刷题 五月集训 第 3 天 - Sorting
977. Squares of a Sorted Array
题目介绍:
Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
解题思路:
- Arrays.sort() 的time complexity是 O(n log n)。
- 更好的sorting解法可以只遍历一遍 O(n), 需要 two pointer 比较array两端数字。
注意的地方 & 须记住的地方:
- 思考是否需要其他更为efficent的sort方法。这道题的2 pointer很典型。
代码部分:
class Solution {
public int[] sortedSquares(int[] nums) {
int[] arr = new int[nums.length];
if(nums.length == 0 ){
return arr;
}
int left = 0;
int right = nums.length -1;
int idx = nums.length-1;
while(left<= right){
if(Math.abs(nums[left]) >= Math.abs(nums[right])){
arr[idx--] = nums[left]*nums[left];
left++;
}