数组:
![](https://img-blog.csdnimg.cn/img_convert/fef9948477b4702bebaddc7419a17851.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/3169db31ded73aafc957dc7f375f7554.jpeg)
链表:
![](https://img-blog.csdnimg.cn/img_convert/b6b7b9c27a309e4dd35a21b0e01cf77b.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/84dbe1727ab812aff5bbd140199f3613.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/042fb9a279022ab05fac10a5d30d095b.jpeg)
反转链表
https://leetcode.cn/problems/reverse-linked-list/
![](https://img-blog.csdnimg.cn/img_convert/6e1cdc1ac90a2a0de385606c21fca755.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://img-blog.csdnimg.cn/img_convert/8d1f543c09d092ac5d846c1939ff06c6.png)
![](https://img-blog.csdnimg.cn/img_convert/e5b270c4f34279836536f48e52f18262.png)
![](https://img-blog.csdnimg.cn/img_convert/9fa16afd724e710ec51666b6530601d2.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://img-blog.csdnimg.cn/img_convert/41bd0f59a9946db8b08d5cb15858bd61.png)
![](https://img-blog.csdnimg.cn/img_convert/cca067d1edc5b34168aa6e4cb9c11970.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
}