Lintcode174——删除链表中倒数第n个节点
2018-02-19 19:05
225 查看
题目:
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。又get了一方法
题解:
class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; this.next = null; } } public class Solution { public static ListNode removeNthFromEnd(ListNode head, int n) { if (n <= 0) { return null; } ListNode dummy = new ListNode(0); dummy.next = head; ListNode preDelete = dummy; for (int i = 0; i < n; i++) { if (head == null) { return null; } head = head.next; } while (head != null) { head = head.next; preDelete = preDelete.next; } preDelete.next = preDelete.next.next; return dummy.next; } public static void main(String[] args){ ListNode head=new ListNode(1); ListNode head1=new ListNode(2); ListNode head2=new ListNode(3); ListNode head3=new ListNode(4); ListNode head4=new ListNode(5); head1.next=head2; head2.next=head3; head3.next=head4; head4.next=null; removeNthFromEnd(head,2); System.out.println(head.val+" "+head1.val+" "+head2.val); } }
思路
链表从后遍历到第n个———->a)先用一个节点dummy保存head节点的前一节点,最后返回dummy.next
b)用一个循环让head节点右移n个节点
c)用一和dummy同指向的节点preDelete,和head节点同步移动,直到head移动到null(尾节点.next)
d)用preDelete.next=preDelete.next.next删除该节点
相关文章推荐
- LintCode—删除链表中倒数第n个节点(174)
- lintcode 容易题:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
- LintCode Remove Nth Node From End of List 删除链表中倒数第n个节点
- LintCode 删除链表中倒数第n个节点
- lintcode ----删除链表中倒数第n个节点
- lintcode——删除链表中倒数第n个节点(链表)
- lintCode-删除链表中倒数第n个节点
- LintCode : 删除链表中倒数第n个节点
- LintCode 删除链表中倒数第n个节点
- Lintcode 174.删除链表中倒数第n个节点
- LintCode_166_链表倒数第n个节点
- 174 - 删除链表中倒数第n个节点
- Leet Code 19 删除链表中倒数第n个节点 - Java
- lintcode——链表倒数第n个节点
- 174删除链表中倒数第n个节点
- LintCode Nth to Last Node in List 链表倒数第n个节点
- lintcode 容易题:nth to Last Node In List 链表倒数第n个节点
- LintCode-174.删除链表中倒数第n个节点
- LintCode-链表倒数第n个节点
- 174. 删除链表中倒数第n个节点 (remove-nth-node-from-end-of-list)(c++)----lintcode面试题之链表