有序数组的平方
- 一、题目
- 二、解题方法
- 1、暴力解法
- 2、双指针
- 思路
- 代码
- 三、力扣刷题
- 合并两个有序数组
一、题目
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
二、解题方法
1、暴力解法
class Solution {
sortedSquares(A) {
for (let i = 0; i < A.length; i++) {
A[i] *= A[i];
}
A.sort((a, b) => a - b); // 使用快速排序
return A;
}
}
2、双指针
思路
数组其实是有序的, 只不过负数平方之后可能成为最大数了。
那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。
此时可以考虑双指针法了,i指向起始位置,j指向终止位置。
定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。
代码
三、力扣刷题
合并两个有序数组
暴力解法: