leetcode-19-Remove Nth Node From End of List
2017-01-24 12:48
393 查看
问题
题目:[leetcode-19]思路
需要注意一点,当n==len的情形需要特殊处理。代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int len = 0; for( ListNode* p = head; p!=NULL; p=p->next ) len++; if(n==len) { ListNode* p = head; head = head->next; delete p; p = NULL; return head; } int cnt = len-n; ListNode* pre = NULL; ListNode* p = head; for(int i = 0; i < cnt; ++i){ pre = p; p=p->next; } pre->next = p->next; delete p; p = NULL; return head; } };
思路1
本省可以两个指针。但是边界情况太多。所以,先算出节点个数了。
边界情况比较多,小心!
代码1
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(!head) return NULL; // 1 ListNode* p = head; int cnt = 0; while(p){ ++cnt; p = p->next; } if(cnt < n) return NULL; // 2 if(1==cnt) return NULL; // 3 if(n==cnt){ // 4 ListNode* ret = head->next; delete head; return ret; } int k = cnt - n - 1; std::cout << k << std::endl; p = head; for(int i = 0; i < k; ++i){ p = p->next; } ListNode* q = p->next; p->next = q->next; delete q; return head; } };
相关文章推荐
- [Leetcode] 19 - Remove Nth Node From End of List
- [LeetCode]19 Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- [Leetcode 19, Easy] Remove Nth Node From End of List
- leetcode[#19 链表 标尺]Remove Nth Node From End of List
- leetcode19-Remove Nth Node From End of List
- LeetCode 19.Remove Nth Node From End of List
- leetcode 19 Remove Nth Node From End of List
- LeetCode19——Remove Nth Node From End of List
- LeetCode 19. Remove Nth Node From End of List
- 【LeetCode】19. Remove Nth Node From End of List (2 solutions)
- [Leetcode 19] 19 Remove Nth Node From End Of List
- LeetCode | #19 Remove Nth Node From End of List
- leetcode-19 Remove Nth Node From End of List
- Leetcode_19_Remove Nth Node From End of List
- LeetCode(19) Remove Nth Node From End of List
- [leetcode 19] Remove Nth Node From End of List
- LeetCode --- 19. Remove Nth Node From End of List
- leetcode_19_Remove Nth Node From End of List
- LeetCode 19 Remove Nth Node From End of List