977. 有序数组的平方 JavaScript实现

81 阅读1分钟

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;
};