【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

     
相关推荐
码破苍穹ovo33 分钟前
堆----1.数组中的第K个最大元素
java·数据结构·算法·排序算法
愤怒的小鸟~~~35 分钟前
c语言创建的一个队列结构(含有这个头指针和这个尾指针的结构具有一定的参考价值)
c语言·开发语言·算法
Joker-01112 小时前
深入 Go 底层原理(十二):map 的实现与哈希冲突
算法·go·哈希算法·map
金融小师妹3 小时前
AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
大数据·人工智能·算法
金融小师妹3 小时前
基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联
大数据·人工智能·算法
白日梦想家-K4 小时前
题单【模拟与高精度】
开发语言·c++·算法
岁忧4 小时前
(LeetCode 面试经典 150 题) 138. 随机链表的复制 (哈希表)
java·c++·leetcode·链表·面试·go
重生之我是Java开发战士4 小时前
【C语言】内存函数与数据在内存中的存储
c语言·开发语言·算法
roman_日积跬步-终至千里5 小时前
【机器学习】“回归“算法模型的三个评估指标:MAE(衡量预测准确性)、MSE(放大大误差)、R²(说明模型解释能力)
算法·机器学习·回归
只会蓝桥杯能算acmer吗6 小时前
面试小总结
面试·职场和发展