【刷题日记】

这篇博客介绍了两种算法实现:一是对排序数组进行平方后重新排序,二是生成螺旋矩阵。`sortedSquares`方法使用双指针技巧,从数组两端开始计算平方值并填充结果数组;`generateMatrix`方法通过四个指针按顺时针方向填充矩阵。
摘要由CSDN通过智能技术生成

Handwritten notes

请添加图片描述Alt

Code

Squares of a Sorted Array

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        left, right, k = 0, len(nums)-1, -1
        n = len(nums)
        a = [0]*n
        while left <= right:
            if nums[left]**2 < nums[right]**2:
                a[k] = nums[right]**2
                right -= 1
            elif nums[left]**2 > nums[right]**2:
                a[k] = nums[left]**2
                left += 1
            else:
                a[k] = nums[right]**2
                right -= 1
            k -= 1
        return a

Spiral Matrix

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        m = [[0]*n for _ in range(n)]
        l, r, b, t = 0, n - 1, n-1, 0
        num = 1
        target = n*n
        while num <= target:
            for i in range(l, r + 1): # left to right
                m[t][i] = num
                num += 1
            t += 1
            for i in range(t, b + 1): # top to bottom
                m[i][r] = num
                num += 1
            r -= 1
            for i in range(r, l - 1, -1): # right to left
                m[b][i] = num
                num += 1
            b -= 1
            for i in range(b, t -1 , -1): # bottom to top
                m[i][l] = num
                num += 1
            l += 1
        return m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值