2021-10-31每日打卡:每日打卡:腾讯精选50题

2021-10-31每日打卡:每日打卡:腾讯精选50题,第1张

2021-10-31每日打卡:每日打卡:腾讯精选50题 2021-10-31每日打卡:每日打卡:腾讯精选50题 写在前面

“这些事儿在熟练之后,也许就像喝口水一样平淡,但却能给初学者带来巨大的快乐,我一直觉得,能否始终保持如初学者般的热情、专注,决定了在做某件事时能走多远,能做多好。” 该系列文章由python编写,遵循LeetBook 列表/腾讯的刷题顺序,所有代码已通过。每日3道,随缘剖析,希望风雨无阻,作为勉励自己坚持刷题的记录。

54.螺旋矩阵

  • 移动边界法:注意while并不能检查到每个for循环,可能存在后面两个循环已经无需进行(上面两个循环导致的边界已经超过范围拉),所以还要加个if判断
class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        # 上下左右         
        s,x,z,y = 0,len(matrix)-1, 0, len(matrix[0])-1
        res = []
        # 相等的情况也需要完成该遍遍历
        while s<=x and z<=y:
        	# 注意range的最后一个取不到
            for col in range(z,y+1):
                res.append(matrix[s][col])
            s+=1
            if s>x: break
            for row in range(s,x+1):
                res.append(matrix[row][y])
            y-=1
            if y 
673. 螺旋矩阵II 

  • 移动边界:
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        # 上下左右         
        s,x,z,y = 0,n-1, 0, n-1
        # 注意初始化结果的方法
        res, num = [[None]*n for _ in range(s,x+1)], 1
        while s<=x and z<=y:
            for col in range(z,y+1):
                res[s][col]= num
                num+=1
            s+=1
            if s>x: break
            for row in range(s,x+1):
                res[row][y]=num
                num+=1
            y-=1
            if y 
88. 合并两个有序数组 

  • 第一想法是“合并+排序”,然后想到可以“双指针比较-插入”,而为了前面元素不被覆盖,采取倒序转移:
class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        p1, p2, index = m-1, n-1, m+n-1
        while (p1>=0 and p2>=0):
            if nums1[p1]>nums2[p2]:
                nums1[index]=nums1[p1]
                p1-=1
            else: 
                nums1[index]=nums2[p2]
                p2-=1
            index-=1
        while p2>=0:
            nums1[index]= nums2[p2]
            index-=1
            p2-=1

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4830440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-10
下一篇 2022-11-10

发表评论

登录后才能评论

评论列表(0条)

保存