Documentation
¶
Index ¶
- type ListNode
- func BuildLinkedList(values []int) *ListNode
- func BuildLinkedList2(nums []int) *ListNode
- func DeleteLinkedList(head *ListNode, position int) (*ListNode, error)
- func DetectCycle(head *ListNode) *ListNode
- func DetectCycle2(head *ListNode) *ListNode
- func GetIntersectionNode(headA, headB *ListNode) *ListNode
- func GetIntersectionNode2(headA, headB *ListNode) *ListNode
- func InsertLinkedList(head *ListNode, value, position int) (*ListNode, error)
- func MergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode
- func MergeTwoLists2(list1 *ListNode, list2 *ListNode) *ListNode
- func RemoveNthFromEnd(head *ListNode, n int) *ListNode
- func RemoveNthFromEnd2(head *ListNode, n int) *ListNode
- func RemoveNthFromEnd3(head *ListNode, n int) *ListNode
- func RemoveNthFromEnd4(head *ListNode, n int) *ListNode
- func RemoveNthFromEnd5(head *ListNode, n int) *ListNode
- func ReverseList(head *ListNode) *ListNode
- func ReverseList2(head *ListNode) *ListNode
- func ReverseList3(head *ListNode) *ListNode
- func ReverseList4(head *ListNode) *ListNode
- func ReverseList5(head *ListNode) *ListNode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ListNode ¶
func BuildLinkedList2 ¶
func DeleteLinkedList ¶
DeleteLinkedList 下标从0开始
func DetectCycle2 ¶
DetectCycle2 快慢指针 我们使用两个指针,fast 与 slow。它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置, 而 fast 指针向后移动两个位置。如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。 当发现 slow 与 fast 相遇时,我们再额外使用一个指针 ptr 。起始,它指向链表头部;随后,它和 slow 每次向后移动一个位置。最终,它们会在入环点相遇
func GetIntersectionNode ¶
GetIntersectionNode 两个链表直接比较,时间复杂度 O(N^2)
func GetIntersectionNode2 ¶
GetIntersectionNode2 记录下来链表每个节点比较
func InsertLinkedList ¶
InsertLinkedList 头插法,下标从0开始
func MergeTwoLists ¶
MergeTwoLists 递归 将两个链表里面值小的和另一个链表合并
func MergeTwoLists2 ¶
MergeTwoLists2 新建一个链表,将两个链表合并过来
func RemoveNthFromEnd ¶
func RemoveNthFromEnd2 ¶
RemoveNthFromEnd2 我们也可以在遍历链表的同时将所有节点依次入栈。根据栈「先进后出」的原则, 我们弹出栈的第 n 个节点就是需要删除的节点, 并且目前栈顶的节点就是待删除节点的前驱节点。 这样一来,删除操作就变得十分方便了
func RemoveNthFromEnd3 ¶
RemoveNthFromEnd3 遍历一遍存储每个节点,然后再删掉第 len(nodes) - n 个节点
func RemoveNthFromEnd4 ¶
RemoveNthFromEnd4 双指针,first 先走n步,然后second再走, 当first到尾部时,second位置的下一个就是待删除节点 时间复杂度: O(L), L 是链表长度 空间复杂度: O(1)
func RemoveNthFromEnd5 ¶
func ReverseList ¶
ReverseList 迭代法: 记录前一个节点和后一个节点,遍历时候改为向前的指针,时间复杂度O(N)