[英雄星球七月集训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]