电子商务网站建设.pdf,idea网站开发,小波app推广网,网站如何快速免费推广【力扣】977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums#xff0c;返回 每个数字的平方 组成的新数组#xff0c;要求也按 非递减顺序 排序。
示例 1#xff1a; 输入#xff1a;nums [-4,-1,0,3,10] 输出#xff1a;[0,1,9,16,100] 解释#xff1a…【力扣】977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums返回 每个数字的平方 组成的新数组要求也按 非递减顺序 排序。
示例 1 输入nums [-4,-1,0,3,10] 输出[0,1,9,16,100] 解释平方后数组变为 [16,1,0,9,100]排序后数组变为 [0,1,9,16,100]
示例 2 输入nums [-7,-3,2,3,11] 输出[4,9,9,49,121]
提示 1 nums.length 1 0 4 10^4 104 - 1 0 4 10^4 104 nums[i] 1 0 4 10^4 104 nums 已按非递减顺序排序
题解
暴力平方后直接排序
class Solution {public int[] sortedSquares(int[] nums) {//新数组,也可以在原数组上进行int[] ans new int[nums.length];for (int i 0; i nums.length; i) {ans[i] nums[i] * nums[i]; //nums[i] * nums[i];}Arrays.sort(ans);return ans;}
}首尾指针每次比较两个指针对应的数选择较大的那个逆序放入答案并往前移动指针。
class Solution {public int[] sortedSquares(int[] nums) {//新数组int[] ans new int[nums.length];int left 0, right nums.length-1;int pos nums.length-1;while(left right) {if (nums[left]*nums[left] nums[right]*nums[right]) {//更新ans数组从大到小ans[pos] nums[left]*nums[left];left;}else {//更新ans数组从大到小ans[pos] nums[right]*nums[right];--right;}--pos;}return ans;}
}