【leetcode】977. 有序数组的平方

有序数组的平方

    • 题目
    • 代码
      • [1. 使用sorted](#1. 使用sorted)
      • [2. 双指针](#2. 双指针)

题目

977. 有序数组的平方

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

示例 1:

输入:nums = [-4,-1,0,3,10]

输出:[0,1,9,16,100]

解释:平方后,数组变为 [16,1,0,9,100]

排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]

输出:[4,9,9,49,121]

代码

1. 使用sorted

直接平方,使用sorted

python 复制代码
class Solution(object):
    def sortedSquares(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        # 数组元素只能覆盖
        for i in range(len(nums)):
            nums[i] = nums[i] * nums[i]
        return sorted(nums)
        

2. 双指针

思路: 非递减顺序:才能使用双指针

判断左右两边的平方,将大的平方放在右边,右边的指针-1

python 复制代码
class Solution(object):
    def sortedSquares(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        # 非递减顺序:才能使用双指针
        left = 0
        right = len(nums) - 1
        result = [0] * len(nums)
        pos = len(nums) - 1
        while left <= right:
            if nums[left] * nums[left] < nums[right] * nums[right]:
                result[pos] = nums[right] * nums[right]
                right -= 1
            else:
                result[pos] = nums[left] * nums[left]
                left += 1
            pos -= 1
        return result

     
相关推荐
夏鹏今天学习了吗6 小时前
【LeetCode热题100(82/100)】单词拆分
算法·leetcode·职场和发展
mit6.8247 小时前
mysql exe
算法
2501_901147838 小时前
动态规划在整除子集问题中的应用与高性能实现分析
算法·职场和发展·动态规划
中草药z8 小时前
【嵌入模型】概念、应用与两大 AI 开源社区(Hugging Face / 魔塔)
人工智能·算法·机器学习·数据集·向量·嵌入模型
CCPC不拿奖不改名8 小时前
SQL基础(SQL小白教程):MySQL语句+环境一键搭建+面试习题
数据库·sql·计算机网络·mysql·oracle·面试·职场和发展
踩坑记录8 小时前
leetcode hot100 189.轮转数组 medium
leetcode
知乎的哥廷根数学学派8 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
ADI_OP9 小时前
ADAU1452的开发教程10:逻辑算法模块
算法·adi dsp中文资料·adi dsp·adi音频dsp·adi dsp开发教程·sigmadsp的开发详解
xingzhemengyou19 小时前
C语言 查找一个字符在字符串中第i次出现的位置
c语言·算法
Dream it possible!9 小时前
LeetCode 面试经典 150_二分查找_在排序数组中查找元素的第一个和最后一个位置(115_34_C++_中等)
c++·leetcode·面试