广州公司做网站,运城做网站方式方法,wordpress维护插件,六安裕安区题目#xff1a; Leetcode 977. 有序数组的平方
描述#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums#xff0c;返回 每个数字的平方 组成的新数组#xff0c;要求也按 非递减顺序 排序 思路#xff1a; 双指针法 数组其实是有序的#xff0c; 只不过负数平方之…题目 Leetcode 977. 有序数组的平方
描述 给你一个按 非递减顺序 排序的整数数组 nums返回 每个数字的平方 组成的新数组要求也按 非递减顺序 排序 思路 双指针法 数组其实是有序的 只不过负数平方之后可能成为最大数了。
那么数组平方的最大值就在数组的两端不是最左边就是最右边不可能是中间。
此时可以考虑双指针法了i指向起始位置j指向终止位置。
定义一个新数组result和A数组一样的大小让k指向result数组终止位置。
如果A[i] * A[i] A[j] * A[j] 那么result[k–] A[j] * A[j]; 。
如果A[i] * A[i] A[j] * A[j] 那么result[k–] A[i] * A[i]; 。
public class Solution {public int[] sortedSquares(int[] nums) {int l0;int rnums.length-1;int[] resnew int[nums.length];int jnums.length-1;while(lr){if(nums[l]*nums[l]nums[r]*nums[r])res[j--]nums[l]*nums[l];else res[j--]nums[r]*nums[r--];}return res;}
}