亚马逊做国际外贸在哪个网站,福步外贸论坛怎样注册,高陵网站建设,网站开发语言哪几种19. Remove Nth Node From End of List
remove-nth-node-from-end-of-list
要寻找倒数k个节点#xff0c;
从虚拟头节点0开始走#xff0c;p1指针先走k步#xff0c;到达第k个节点然后p2指针从虚拟节点0开始#xff0c;和p1一起同步前进#xff0c;直到p1走到末尾n1节点…19. Remove Nth Node From End of List
remove-nth-node-from-end-of-list
要寻找倒数k个节点
从虚拟头节点0开始走p1指针先走k步到达第k个节点然后p2指针从虚拟节点0开始和p1一起同步前进直到p1走到末尾n1节点为空共走了n1-k步 p2就达到第n1-k个了即倒数第k个
因为 倒数第1个是 正数第n个即(n1) - 1个 倒数第2个是正数第n-1个即(n1) - 2个 倒数第3个是正数第n-2个即(n1) - 3个 。。。。 倒数第k个是正数第n-k1个即(n1) - k个
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/
func removeNthFromEnd(head *ListNode, n int) *ListNode {dummy : ListNode{-1, head}// 找到倒数n1个节点即n个节点前面的一个x : findFromEnd(dummy, n 1)x.Next x.Next.Nextreturn dummy.Next
}func findFromEnd(head *ListNode, k int) *ListNode {p1, p2 : head, head// 从虚拟头节点0开始移动// p1走k步移动到k个节点for i : 0; i k; i {p1 p1.Next}// p1走了N-k1步到达第n1个节点// p2走了N-k1步到达了n-k 1 个节点。for p1 ! nil {p1 p1.Nextp2 p2.Next}//p2位于n-k1个节点即倒数第k个//为倒数第1个为正数第n个节点n (n1) - 1//倒数第k个节点 为正数(n1) - kreturn p2
}