给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
代码:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int left=0;
int right=nums.size()-1;
vector<int> result(nums.size(), 0);
int k=nums.size()-1;
while(left<=right){
if(nums[left]*nums[left]<nums[right]*nums[right]){
result[k--]=nums[right]*nums[right];
right--;
}
else if (nums[left]*nums[left]>=nums[right]*nums[right]){
result[k--]=nums[left]*nums[left];
left++;
}
}
return result;
}
};
首先创建一个vector result,left=0,right=nums.size()-1
while循环判断left<=right,
如果nums[left]的平方小于nums[right]的平方,则nums[right]的平方存储到result中,此时k--,right--;如果nums[left]的平方大于等于nums[right]的平方,则nums[left]的平方存储到result中,此时k--,left++;
当不满足while循环的条件,返回result。
该while循环可以改为for循环。
题目来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/squares-of-a-sorted-array