leetcode 19:Remove Nth Node From End of List
2016-04-16 15:59
477 查看
题目描述
Given a linked list, remove the nth node from the end of list andreturn its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list
becomes 1->2->3->5. Note: Given n will always be valid. Try to do this
in one pass.
题目大意:删除链表的倒数第N个结点。要求只遍历一次。
解题思路
用两个指针,第一个指针先走N步,第二个指针停在头结点,然后一起走,当第一个指针走到最后时,第二个指针指向要删除结点的前一个结点/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null || n == 0) return null; ListNode start = new ListNode(0); start.next = head; ListNode pHead = start; ListNode pBehind = start; for(int i =0 ; i< n;i++){ pHead = pHead.next; } while(pHead.next!=null){ pHead=pHead.next; pBehind = pBehind.next; } pBehind.next = pBehind.next.next; return start.next; } }
相关文章推荐
- C#定义并实现单链表实例解析
- C#数据结构之单链表(LinkList)实例详解
- C语言实现单链表逆序与逆序输出实例
- C语言单链表常见操作汇总
- C数据结构之单链表详细示例分析
- C++中单链表的建立与基本操作
- 深入单链表的快速排序详解
- C语言单链表的实现
- java实现单链表中是否有环的方法详解
- java实现单链表、双向链表
- Python单链表的简单实现方法
- Go语言单链表实现方法
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- 结构之美:在单链表指定位置插入数据
- 《编程之美》3.4:没有头结点的单链表如何删除结点
- 结构之美:使用尾插法创建单链表
- 单链表实现