leetcode 删除链表的倒数第N个节点
2019-01-15 11:42
417 查看
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解题思路:
主要是利用双指针法,从头到尾依次遍历,这两个指针相隔N个节点,这样的话,快指针到最后一位的时候,满指针正好指向要删除的节点。
[code]/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { //先判断头结点 if(head.next==null) return null; //定义两个节点,一个比另一个快,相差N个节点,这样,当第一个走到尾节点的时候,第二个节点指向的正是要删除的节点 ListNode first = head; ListNode second = head; //先让第一个走N步 for (int i = 0;i<n;i++) { first=first.next; } //判断是否已经是尾节点了,如果是,那就直接返回头节点 if(first == null) { head=head.next; return head; } //两个节点都同时往后走 while(first.next!=null) { second = second.next; first=first.next; } //删除节点second //second.val = second.next.val; second.next = second.next.next; return head; } }
相关文章推荐
- leetcode 19: 删除链表的倒数第N个节点
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- leetcode-删除链表的倒数第N个节点
- 在单向链表中如何快速查到倒数第n个节点 这简直是一种神奇的思路!!!!leetcode 删除倒数第n个节点
- leetcode19--删除链表中倒数第n个节点
- LeetCode(Remove Nth Node From End of List)删除链表倒数第n个节点
- [LeetCode]78. Remove Nth Node From end of List删除链表中倒数第N个节点
- 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)
- [Leetcode] 19. 删除链表的倒数第N个节点 java
- 【LeetCode】Remove Nth Node From End of List 删除链表中倒数第n个节点- Easy +
- LeetCode 从链表中删除倒数第N个节点
- leetcode19 Remove Nth Node From End of List(删除链表的倒数第N个节点)
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- leetcode-19. Remove Nth Node From End of List(删除链表倒数第N个节点)
- leetcode:Remove Nth Node From End of List(删除链表倒数第n个节点)【面试算法题】
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- 每天一道LeetCode-----删除链表倒数第n个节点
- [LeetCode]—Remove Nth Node From End of List 删除链表的倒数第n个节点
- LeetCode:删除链表的倒数第N个节点
- 删除链表中倒数第n个节点-LintCode