[英雄星球七月集训LeetCode解题日报] 第12日 链表

日报

  • 又是水过的一天,感觉像暴风雨前的宁静。

题目

一、2326. 螺旋矩阵 IV

链接: 2326. 螺旋矩阵 IV

1. 题目描述

在这里插入图片描述

2. 思路分析
  • 这题是两周前周赛的T2,当时展开了写的,这次正好把方向封装一下。
  • 观察题目是螺旋矩阵系列,可以在力扣找到其他的类似题目。
  • 因为开内存,禁用gc后会有较大提升,但没必要。
3. 代码实现
import gc

gc.disable()
dirs = [
            (0,1),
            (1,0),
            (0,-1),
            (-1,0)
        ]
class Solution:
    def spiralMatrix(self, m: int, n: int, head: Optional[ListNode]) -> List[List[int]]:
        grid = [[-1]*n for _ in range(m)]
        
        def in_bound(x,y):
            return 0<=x<m and 0 <= y < n and grid[x][y]== -1
        d = 0 
        x,y = 0,0
        while head:
            grid[x][y] = head.val 
            a,b = x+dirs[d][0],y+dirs[d][1]
            if not in_bound(a,b):
                d = (d+1)%4
                a,b = x+dirs[d][0],y+dirs[d][1]
            x,y = a,b
            head = head.next
        return grid

二、707. 设计链表离

链接: 707. 设计链表

1. 题目描述

在这里插入图片描述

2. 思路分析

题目要求实现一个支持随机插入的链表。
算了我直接用数组模拟吧。

3. 代码实现
class MyLinkedList:

    def __init__(self):
        self.q = []


    def get(self, index: int) -> int:
        if index>=len(self.q):
            return -1
        return self.q[index]


    def addAtHead(self, val: int) -> None:
        self.q.insert(0,val)


    def addAtTail(self, val: int) -> None:
        self.q.append(val)


    def addAtIndex(self, index: int, val: int) -> None:
        # if index == len(self.q):
        #     self.q.append(val)
        # elif index <=0:
        #     self.q.insert(0,val)
        # elif index<len(self.q):
        #     self.q.insert(index,val)
        if index <= len(self.q):
            self.q.insert(index,val)



    def deleteAtIndex(self, index: int) -> None:
        if 0<=index<len(self.q):
            del self.q[index]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值