代码随想录算法训练营第二天 (1)|977.有序数组的平方

78 阅读1分钟

题目描述

给你一个按 非递减顺序 排序的整数数组 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