码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】19. Remove Nth Node From End of List

时间:2016-07-05 01:08:57      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

Given a linked list, remove the nth node from the end of list and return its head.

解题分析:

这个题的关键是找到倒数第n个节点:设置两个标记变量,想让其中1个走n-1步,然后两个一起往后走,当第一个变量指向表尾时,第二个变量就指向要删除的节点。

具体代码:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 public class Solution {
10    
11     public static ListNode removeNthFromEnd(ListNode head, int n) {
12         if(n==0){
13             ListNode node =head;
14             node.next=null;
15             head=head.next;
16             return head;
17         }
18         int count=0;
19         ListNode node = head;
20         //让node变量先走n步
21         while(count<n){
22             node=node.next;
23             count++;
24         }
25         //current表示要被删除的节点,pre表示current的上一个节点
26         ListNode pre=null;
27         ListNode current=head;
28         while(node!=null){
29             node=node.next;
30             pre=current;
31             current=current.next;
32         }
33         if(pre!=null){
34             pre.next=current.next;
35         }
36         //被删除的节点是头结点的情况要单独判断
37         else{
38             pre=head;
39             current=head.next;
40             pre.next=null;
41             head=current;
42         }
43         return head;
44     }
45 }

 

【leetcode】19. Remove Nth Node From End of List

标签:

原文地址:http://www.cnblogs.com/godlei/p/5642151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!