【Leetcode】[977] 有序数组的平方
Author: Xin Pan
Date: 2022.3.2
题目
给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
解法
由于题目输入是排序的数组。这个时候可以考虑使用双指针技巧来解题。
答案1
执行用时: 20 ms 内存消耗: 26.4 MB
class Solution
{
public:
vector<int> sortedSquares(vector<int> &nums)
{
int nnum = nums.size();
vector<int> vecret(nnum);
int nl = 0, nr = nnum - 1, ind = nnum - 1;
while (nl <= nr)
{
if (nums[nl] * nums[nl] <= nums[nr] * nums[nr])
{
vecret[ind--] = pow(nums[nr--], 2);
}
else
{
vecret[ind--] = pow(nums[nl++], 2);
}
}
return vecret;
}
};
答案2
执行用时: 24 ms 内存消耗: 25.1 MB
class Solution
{
public:
vector<int> sortedSquares(vector<int> &nums)
{
int nnum = nums.size();
vector<int> vecret(nnum);
int nl = 0, nr = nnum - 1, ind = nnum - 1;
while (nl <= nr)
{
if (nums[nl] * nums[nl] <= nums[nr] * nums[nr])
{
vecret[ind--] = nums[nr] * nums[nr];
nr--;
}
else
{
vecret[ind--] = nums[nl] * nums[nl];
nl++;
}
}
return vecret;
}
};
答案3
执行用时: 32 ms 内存消耗: 25.3 MB
class Solution
{
public:
vector<int> sortedSquares(vector<int> &nums)
{
int nnum = nums.size();
vector<int> vecret(nnum);
int nl = 0, nr = nnum - 1, ind = nnum - 1;
while (nl <= nr)
{
if (nums[nl] * nums[nl] <= nums[nr] * nums[nr])
{
vecret[ind--] = pow(nums[nr--], 2);
}
else
{
vecret[ind--] = pow(nums[nl++], 2);
}
}
return vecret;
}
};
越写时间消耗越大,看起来花里胡哨的,都是虚的。真淦。越写越差就是我了,无疑了。