题目描述
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
[!NOTE] 新知识点 Python 创建
List[int]空数组时,使用[0] * size.
代码示例
from typing import List
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
n = len(nums)
result = [0] * n # 初始化一个与 nums 相同长度的数组,用于存放结果
left, right, index = 0, n - 1, n - 1 # 初始化左右指针和结果数组的索引
while left <= right:
left_square = nums[left] ** 2
right_square = nums[right] ** 2
if left_square > right_square:
result[index] = left_square
left += 1
else:
result[index] = right_square
right -= 1
index -= 1
return result
# 示例用法
if __name__ == "__main__":
solution = Solution()
nums = [-4, -1, 0, 3, 10]
result = solution.sortedSquares(nums)
print(result)
自己看到题目的第一想法
使用双指针,指向数组头部和尾部的元素,并得出平方数进行对比,将大的数值依次由尾向头插入新数组。
看完代码随想录之后的想法
之前在代码随想录刷过本题,思路和教程基本一致,证明已经掌握了这道题
自己实现过程中遇到哪些困难
粗心会把 index-- 写错,总是提示 result[index] 数组索引越界
今日收获,记录一下自己的学习时长
历时 1 h,巩固了双指针的使用方法,并且完成了一篇 blog