力扣 LeetCode 977. 有序数组的平方(Day1:数组)
解题思路:
方法一:先平方再快排
方法二:双指针
因为可能有负数,所以对于一个数组 [ -5 , -3 , 0 , 2 , 4 ] 可以从两边向内靠拢,最大值一定出现在两端
设置指针 i 和指针 j 分别从左右两边靠拢
因为要从小到大排序,所以用 k 倒着赋值即可
class Solution {
public int[] sortedSquares(int[] nums) {
int i = 0;
int j = nums.length - 1;
int k = nums.length - 1;
int[] res = new int[nums.length];
while (i <= j) {
if (nums[i] * nums[i] < nums[j] * nums[j]) {
res[k] = nums[j] * nums[j];
k--;
j--;
} else {
res[k] = nums[i] * nums[i];
k--;
i++;
}
}
return res;
}
}
原文地址:https://blog.csdn.net/qq_61504864/article/details/143682837
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!