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

[LeetCode] Remove Linked List Elements

时间:2015-07-13 17:38:07      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

思路:建立一个新链头,然后遍历head,要注意对最后一个数据的处理

时间复杂度 O(n)

代码:

    public ListNode removeElements(ListNode head, int val) {
        ListNode node=new ListNode(val==Integer.MIN_VALUE?val+1:val-1);
        ListNode indexNode=node;
        ListNode t=head;
        while(t!=null)
        {
            if(t.val!=val)
            {
                indexNode.next=t;
                indexNode=indexNode.next;
            }
            else 
            {
                if(t.next==null)//the last one
                {
                    indexNode.next=null;
                }
            }
            t=t.next;
        }
        return node.next;
    }

优化

  上面的代码思路是将head遍历往node里面填充,这里是之间将head链接到node下,然后采用两个指针遍历,一个不断前进,一个指向最后一个符合要求的节点

    public ListNode removeElements(ListNode head, int val) {
        ListNode node=new ListNode(0);
        node.next=head;
        ListNode indexNode=node;
        ListNode t=head;
        while(t!=null)
        {
            if(t.val==val)
            {
                indexNode.next=t.next;
            }
            else 
            {
                indexNode=indexNode.next;
            }
            t=t.next;
        }
        return node.next;
    }

 

[LeetCode] Remove Linked List Elements

标签:

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

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