本文主要是介绍LeetCode977:有序数组的平方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
解题思想1
平方后直接使用排序
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {for(int i=0;i<nums.size();i++){nums[i]=nums[i]*nums[i];}sort(nums.begin(),nums.end());return nums;}
};
解题思想2
使用双指针分别指向数组的头和尾部,因为头部和尾部的平方是最大的(如果存在负数),然后将二者进行对比。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ans(nums.size());int i = nums.size() - 1;int l = 0, r = nums.size()-1;while (l <= r) {if (abs(nums[l]) >=abs(nums[r])) {ans[i--] = nums[l] * nums[l];l++;}else {ans[i--] = nums[r] * nums[r];r--;}}return ans;}
};
这篇关于LeetCode977:有序数组的平方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!