代码随想录算法训练营第二天 | Leetcode977 有序数组的平方 、Leetcode209 长度最小的子数组、Leetcode59 螺旋矩阵II

本文介绍了三个编程问题的解决方案:对有序数组进行平方操作,找到满足条件的最短子数组长度,以及生成螺旋矩阵。通过类Solution中的方法展示了如何高效地处理这些与IT技术相关的问题。
摘要由CSDN通过智能技术生成

977 有序数组的平方

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        i=0
        j=len(nums)-1
        k=len(nums)-1
        A=[float('inf')]*len(nums)
        while (i<=j):
            if nums[i]*nums[i]>=nums[j]*nums[j]:
                A[k]=nums[i]*nums[i]
                i+=1
                k-=1
            else:
                A[k]=nums[j]*nums[j]
                j-=1
                k-=1
        return A



209 长度最小的有序数组

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        sum=0
        sumL=0
        result=float('inf')
        i=0
        for j in range(len(nums)):
            sum+=nums[j]
            while sum >= target:
                sumL=j-i+1
                result=min(result,sumL)
                sum-=nums[i]
                i+=1
        if result !=float('inf'):
            return result
        else:
            return 0

59 螺旋矩阵 2

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        nums=[[0]*n for _ in range(n)]
        startx=0
        starty=0
        offset=1
        count=1
        loop=n//2
        mid=n//2

        for offset in range(1,loop+1):
            for i in range(starty,n-offset):
                nums[startx][i]=count
                count+=1
            for i in range(startx,n-offset):
                nums[i][n-offset]=count
                count+=1
            for i in range(n-offset,starty,-1):
                nums[n-offset][i]=count
                count+=1
            for i in range(n-offset,startx,-1):
                nums[i][starty]=count
                count+=1
            startx+=1
            starty+=1
        
        if n/2!= n//2:
            nums[mid][mid]+=count

        return nums

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值