977 有序数组的平方

文章目录

简介

我将参考leetcode中的部分题解和网上资料,自己将自己的刷题思路和过程进行总结。
可能有一些自己的思路,但是大多数还是参考其他网友的想法。
如果对您有帮助我备感荣幸~

解法1

将每个item平方然后排序。

在这里插入图片描述
注意,sort需要:

#include<algorithm>

using namespace std;

时间复杂度:
遍历的部分需要n,sort需要nlogn,一共是O(nlogn)

空间复杂度:
res需要n,sort需要logn的栈空间进行排序

解法2

利用题目中本身有序这个特点,使用双指针法。

在这里插入图片描述
首先p1, p2分别从nums的两端遍历,为了寻找最大的平方数。
然后将最大的平方数放到res的最后,然后向前移动res的游标。

主要利用了nums数组中存在负数和有序这两个特点和最后我们要返回的是每个数字的平方这个特点,这就说明了最大的平方数一定会在nums的两端产生。

时间复杂度:
只需要遍历一遍nums,O(n)

空间复杂度:
只需要一个额外的数组res,O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值