双指针方法解leetcode之977-有序数组的平方
文章目录
在数组结构中,要实现O(n)
或者O(1)
的时间复杂度时,双指针这个方法是个很好的解题思路。
原题描述:
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
解题思路:
1. 因为是有序的,所以可以看成是y=x^2函数图像性质。最大的在两端,越靠近中间,平方后的值越小
2. 定义左右两个指针,分别指向起始和结束。指针往中心移动
3. 比较两个指针指向的值的大小,大的放入结果集,同时移动指针。
go
示例代码
|
|
文章作者 UnknowName
上次更新 2021-11-04