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

LeetCode Valid Parentheses Remove Nth Node From End of List

时间:2015-07-07 22:42:42      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null)
            return null;
        if(n==0)//如果n==0
            return head;
        Map<Integer,ListNode> map=new HashMap<Integer, ListNode>();
        int i=0;
        ListNode temp=head;
        do
        {
            map.put(++i, temp);
            temp=temp.next;
        }
        while(temp!=null);
        if(n>i)//if n > length
            return head;
        //now n>0 && n<=i
        map.remove(i+1-n);
        //if first
        if(n==1)
        {
            if(i==1)
                return null;
            ListNode listNode=map.get(i-1);
            listNode.next=null;//假如只是将listNode置空,并没有什么卵用,结果会输出全部,因为前一个对象保存着该对象的引用
            return head;
        }
        //if end
        if(n==i)
            return map.get(2);
        //从n开始往后重新链接
        map.get(i-n).next=map.get(i+2-n);
        return head;
    }

这里很需要注意的地方:

1、map里面存放的是对象的引用,remove只是删除集合中对象的引用

2、这道题中,假如只是将引用指向null,并不能将销毁对象本身,在链表中,还有其他地方引用了该对象。

3、考虑问题要全面,以后每次做题要将所有情况都列出来!

LeetCode Valid Parentheses Remove Nth Node From End of List

标签:

原文地址:http://www.cnblogs.com/maydow/p/4628683.html

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