这是跟着代码随想录的顺序学习算法的第三天。
以下是学习题解时自己的一些理解与笔记,有错误欢迎指正与讨论。
双指针
参考相关链接:
977. 有序数组的平方
代码随想录
笔记
注意到从数组左右两边往中间看都是单调变化的,可以利用这一点来考虑调用双指针。
双指针同向或逆向都是适合有规律的,同向的可能主要适合两个指针不同步操作比如留一个慢指针指向需要标记的元素,逆向可能适合两边有相同规律?
记录一下这个疑问,以后了解更多之后再来尝试回答这个问题。
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
vector<int> numsSort(nums.size());
for (int i = 0; i < nums.size(); i++){
if(abs(nums[left]) <= abs(nums[right])) {
numsSort[nums.size() - 1 -i] = nums[right] * nums[right];
right--;
} else {
numsSort[nums.size() - 1 -i] = nums[left] * nums[left];
left++;
}
}
return numsSort;
}
};