数组:
![](https://i-blog.csdnimg.cn/blog_migrate/aa95c76581e57546b6308b9ab42fb986.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/913918dd7f676e476ac025875ff465f6.jpeg)
链表:
![](https://i-blog.csdnimg.cn/blog_migrate/a57ec5df751bf29b7be9726a16d9a104.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/d301096fefc332d1cf6550669812e04a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/4650e93fdce555522184b0572ad00abf.jpeg)
反转链表
https://leetcode.cn/problems/reverse-linked-list/
![](https://i-blog.csdnimg.cn/blog_migrate/4bc3567542d9a3ba3b7bb6414393c8df.jpeg)
def reverseList(self, head):
cur,pre = head, None
while cur:
cur.next, prev, cur = prev, cur, cur.next
return prev
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
cur := head
for cur != nil {
next := cur.Next
cur.Next = prev
prev = cur
cur = next
}
return prev
}
两两交换链表中的节点
https://leetcode.cn/problems/swap-nodes-in-pairs/
![](https://i-blog.csdnimg.cn/blog_migrate/4dbce427159c4d8b04925cd3d92fb23a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5637443d709f32c0f72680aab554c459.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e78cfa364ea246c84da6e1c77e36647e.png)
func swapPairs(head *ListNode) *ListNode {
dummyHead = &ListNode{0, head}
temp := dummyHead
for temp.Next != nil && temp.Next.Next != nil {
node1 := temp.Next
node2 := temp.Next.Next
temp.Next = node2
node1.Next = node2.Next
node2.Next = node1
temp = node1
}
return dummyHead.Next
}
判断链表是否有环
https://leetcode.cn/problems/linked-list-cycle/
![](https://i-blog.csdnimg.cn/blog_migrate/1c90a28decbf1c79855abc118364716f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62b55a08c9b7943778528cfa2637aff3.png)
func hasCycle(head *ListNode) bool {
if head == nil || head.Next == nil {
return false
}
slow, fast := head, head.Next
for fast != slow {
if fast == nil || fast.Next == nil {
return false
}
slow = slow.Next
fast = fast.Next.Next
}
return true
}