0
点赞
收藏
分享

微信扫一扫

leetcode 977. Squares of a Sorted Array

问题描述

给定一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

解法一

解题思路:

我们需要对数组中的每个数字进行平方,然后对结果数组进行排序。由于数组已经是非递减排序的,我们可以使用双指针的方法来优化排序过程。

我们可以设置两个指针,一个指向数组的开始,一个指向数组的末尾。然后比较两个指针所指向的元素的平方,将较小的平方放到结果数组的末尾,并将对应的指针向前移动一位。重复这个过程直到一个指针到达数组的中间。

代码实现:

/*
 * @lc app=leetcode.cn id=977 lang=javascript
 *
 * [977] Squares of a Sorted Array
 */

// @lc code=start
function sortedSquares(nums) {
    let result = [];
    let left = 0;
    let right = nums.length - 1;

    while (left <= right) {
        let leftSquare = nums[left] * nums[left];
        let rightSquare = nums[right] * nums[right];
        if (leftSquare > rightSquare) {
            result.push(leftSquare);
            left++;
        } else {
            result.push(rightSquare);
            right--;
        }
    }
    return result;
}
// @lc code=end
举报

相关推荐

0 条评论