刷题日记-Day2- Leedcode-977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵 II-Python实现

文章详细解析了LeetCode中的三个题目:有序数组的平方(非递减排序求平方并保持非递减),长度最小的子数组(找到满足和大于等于目标的最小子数组),以及螺旋矩阵II(生成顺时针排列的矩阵)。作者提供了清晰的思路和Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

977 有序数组的平方

链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/

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

思路:分三种情况
-1. 全正,直接返回原数组平方
-2. 全负,返回原数组平方的逆序
-3. 有正有负
(1)寻找中间点位(绝对值从小变大的起点或者相邻乘积<=0的位置)
(2)左指针为mid-1 ,右指针为mid + 1
(3) 转换为两个有序数组合并问题
(4) 注意点:等其中一个结束后要把未结束的那个剩余的数字全部追加到最后

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        snums = [num * num for num in nums]
        if nums[0] >= 0:
            return snums
        elif nums[-1] <=0:
            return list(reversed(snums))
        mid = 0
        for i in range(len(nums)-1):
            if (nums[i] * nums[i+1])<=0:
                if abs(nums[i]) < nums[i+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值