LeetCode题解如何用数组实现链表

一般链表的实现不是基于数组的,而是基于指针的。那是否可以用数组模拟呢?如果可以的话,为什么大家都不用呢? 请大家尝试自己实现之。

题解:不知道和leetcode 707是不是同一个意思,我这实现了707的,等会再看看大佬们的答案。
Python版:
```py
class Node:
def __init__(self, val):
self.val = val
self.next = None

class MyLinkedList:
def __init__(self):
self.head = Node(0) # 哨兵节点,伪头节点,不存储数据
self.size = 0

def get(self, index: int) -> int:
if index = self.size:
return -1
prev = self.head
for _ in range(index + 1):
prev = prev.next
return prev.val

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

def addAtTail(self, val: int) -> None:
self.addAtIndex(self.size, val)

def addAtIndex(self, index: int, val: int) -> None:
if index > self.size or index < 0:
return
self.size += 1
prev = self.head
for _ in range(index): ## 找到index下标对应的前置节点。如果index=0,这段for循环不执行
prev = prev.next
node = Node(val)
node.next = prev.next
prev.next = node

def deleteAtIndex(self, index: int) -> None:
if index >= self.size or index < 0:
return
self.size -= 1
## 先找到前置节点
prev = self.head
for _ in range(index):
prev = prev.next ## 前置节点为prev
node = prev.next ## node为待删除节点
prev.next = node.next
del node
```

LeetCode题解堆排序和快速排序

堆排序和快速排序都是时间复杂度$O(nlogn)$ 的算法,其中 n 为数据规模。 那么两者谁更快呢? 为什么?题解:快排最坏情况下是O(n^2),平均和最好是O(nlogn) ,堆排序始终为O(nlogn),还是堆排序快吧

LeetCode题解斜着遍历

遍历是算法的基础。 我们平时看到的 DFS 和 BFS 都是搜索, 而搜索的核心就是遍历,而关键点就是遍历的方式。 从根本上说动态规划也是枚举所有的可能,而枚举就需要用到遍历。 而平时遍历一个二维数组 martrix 的时候, 我们习惯的方式是按行从左到右或者从右到左遍历。 少有情况是按照列遍历, 更少有情况是斜着遍历。那么这次就考考你, 怎么斜着遍历一个二…

在matplotlib动画模块中管理动态绘图 - python

我想要一个迭代绘制的图,该图允许跳到下一帧,停止它并返回到上一帧。我看过matplotlib动画模块,如果有一种方法可以实现以前的帧功能(例如,按下某个键时向后运行动画几帧),则该模块将是完美的像这样的事情会很好:def update_frame(i, data): fig.set_data(data[i]) 但是我可以明确地管理迭代器是增加还是减少。有没有…

LeetCode题解886. 可能的二分法

给定一组 N 人(编号为 1, 2, ..., N), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。 示例 1:输入:N = 4, disl…

LeetCode题解997. 找到小镇的法官

## 题目描述在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b …