LeetCodeRemove Nth Node From End of List
Posted 有顶天の甲子园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCodeRemove Nth Node From End of List相关的知识,希望对你有一定的参考价值。
给定一个链表,删除从链表尾数起第n个节点,并返回头节点。
e.g.
给定链表:1 -> 2 -> 3 -> 4 -> 5,n = 2
删除倒数第二个节点后的链表: 1 -> 2 -> 3 -> 5
我的笨方法:
原理是判断要删除的节点为从头数起第 count 个节点,然后判断是否为头节点,进行删除。
1 int length(ListNode* head) { 2 int n = 0; 3 ListNode *p = head; 4 while (p) { 5 p = p -> next; 6 n++; 7 } 8 return n; 9 } 10 11 ListNode* removeNthFromEnd(ListNode* head, int n) { 12 int count = length(head) - n + 1; 13 if (count == 1) { 14 ListNode *p = head; 15 head = head -> next; 16 delete p; 17 } else if (count-- > 1) { 18 ListNode *p = head, *q; 19 while (count) { 20 q = p; 21 p = p -> next; 22 count--; 23 } 24 q -> next = p -> next; 25 delete p; 26 } 27 return head; 28 }
以上是关于LeetCodeRemove Nth Node From End of List的主要内容,如果未能解决你的问题,请参考以下文章
LeetcodeRemove Invalid Parentheses
leetcodeRemove Duplicates from Sorted Array
LeetCodeRemove Duplicates from Sorted Array
Remove Nth Node From End of List