977. 有序数组的平方
1、 直接调用API
直接调用API,默认使用快排
var sortedSquares = function(nums) {
for(let i=0; i<nums.length;i++){
nums[i] = nums[i] ** 2
}
return nums.sort((a,b) => a-b)
};
2、双指针
使用O(n) 时间复杂度解决。 方法:比较左右两边数据的大小,分别用指针控制走向。每次将大的数据从头部塞入即可
var sortedSquares = function(nums) {
// 设置两个指针进行遍历
let [i, j] = [0, nums.length - 1];
let temp = []; // 存储最后结果的数组
while (i <= j) {
const m = nums[i] ** 2;
const n = nums[j] ** 2;
if (m >= n) {
temp.unshift(m);
i++;
} else {
temp.unshift(n);
j--;
}
}
return temp;
};