标签:
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