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

LeetCode -- Remove Nth Node From End of List

时间:2015-09-19 21:19:42      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

移除链表的倒出第n个节点。


思路:


本题还是考察链表的删除操作,如果要删除节点h:


如果h不是最后节点,
h.val = h.next.val;
h.next = h.next.next;


如果h为最后节点,
h = null;


第一次遍历找到倒数第n个为正数第几,然后找到删除的点直接删除就可以了。




实现代码:



/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode RemoveNthFromEnd(ListNode head, int n) {
        
         if(head == null){
            return null;
        }
        
        if(n == 1 && head.next == null){
            return null;
        }
        
       var len = 0;
       var h = head;
       while(head != null){
           head = head.next;
           len ++;
       }
       
       if(len - n < 0){
           return null;
       }
       var nth = len - n + 1;
       
       var tmp = h;
       if(nth < len){
	   	var c = 1;
            while(c < nth){
               h = h.next;
               c ++;
            }
			
            h.val = h.next.val;
            h.next = h.next.next;
       }else{
	   		while(h.next.next != null) {
				h = h.next;
			}
           h.next = null;
       }
       
       return tmp;
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode -- Remove Nth Node From End of List

标签:

原文地址:http://blog.csdn.net/lan_liang/article/details/48576041

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