https://leetcode-cn.com/problems/squares-of-a-sorted-array/
一 题目 s0977sortedSquares
给你一个按 非递减顺序
排序的整数数组 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 <= 104
- -104 <= nums[i] <= 104
- nums 已按 非递减顺序 排序
进阶:请你设计时间复杂度为 O(n) 的算法解决本问题
二 题解
class Solution {
public int[] sortedSquares(int[] nums) {
int[] arrays = new int[nums.length];
int start = 0; // 双指针的头指针
int end = nums.length -1; // 双指针的尾指针
int tag = nums.length -1;
int startSquareNum = 0;
int endSquareNum = 0;
while(start<end){
startSquareNum = nums[start] * nums[start];
endSquareNum = nums[end] * nums[end];
if(startSquareNum > endSquareNum){
arrays[tag] = startSquareNum;
start++;
}else{
arrays[tag] = endSquareNum;
end--;
}
tag--;
}
arrays[tag] = nums[end]*nums[end];
return arrays;
}
}