977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
1、首先,想到暴力解法,排序还不会,时间复杂度 O(n^2+n)
2、看别人解法,知道用 双指针,时间复杂度可以到 O(n)
总结:有序的数组,就考虑用双指针降低时间复杂度
3、自己编写除了语法错误,还有边界值错误,导致有部分用例一直提交不通过。
class Solution {
public int[] sortedSquares(int[] nums) {
int k = nums.length-1;
int end =nums.length-1 ;
int i=0;
int[] newnums = new int[k+1];
while(i <= end){//这里的边界值写错,写反,特别注意
if(nums[i]*nums[i]>nums[end]*nums[end]){
newnums[k] = nums[i]*nums[i];
k--;
i++;
}else{
newnums[k] = nums[end]*nums[end];
k--;
end--;
}
}
return newnums;
}
}