Memory刷题day2

这篇文章展示了几个关于数组操作的算法实现,包括将有序数组的每个元素平方并排序,找到和大于等于目标值的子数组的最小区间,以及生成螺旋矩阵。这些算法涉及到数组遍历、动态规划和二维数组的处理。

977有序数组的平方

    def sortedSquares(self, nums: List[int]) -> List[int]:
        _len =len(nums)
        nums1=[0]*_len
        for i in range(_len):
            nums1[i] = nums[i]*nums[i]
        nums1.sort()
        return nums1

977长度最小的子数组

    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        _len = len(nums)
        left = 0
        right= 0
        sum=0
        min_len = _len+1
        while right<_len:
            sum+=nums[right]
            while sum>=target:
                temp_len=right-left+1
                min_len = min(min_len,temp_len)
                sum -= nums[left]
                left+=1
            right+=1
        if min_len==_len+1:
            return 0
        else: return min_len

滑动窗口

977螺旋矩阵 II

    def generateMatrix(self, n: int) -> List[List[int]]:
        matrix = [[0] * n for _ in range(n)]
        num = 1
        left, right, top, bottom = 0, n-1, 0, n-1
        while num <= n*n:
            # 从左到右
            for i in range(left, right+1):
                matrix[top][i] = num
                num += 1
            top += 1
            # 从上到下
            for i in range(top, bottom+1):
                matrix[i][right] = num
                num += 1
            right -= 1
            # 从右到左
            for i in range(right, left-1, -1):
                matrix[bottom][i] = num
                num += 1
            bottom -= 1
            # 从下到上
            for i in range(bottom, top-1, -1):
                matrix[i][left] = num
                num += 1
            left += 1
        return matrix
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值