203. Remove linked List Elements
链表:听说用虚拟头节点会方便很多?
Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val == val, and return the new head.
Example 1:
Input: head = [1,2,6,3,4,5,6], val = 6 Output: [1,2,3,4,5]
Example 2:
Input: head = [], val = 1 Output: []
Example 3:
Input: head = [7,7,7,7], val = 7 Output: []
Constraints:
The number of nodes in the list is in the range [0, 104]. 1 <= Node.val <= 50 0 <= val <= 50
JAVA实现代码:
//未添加虚节点版本 class Solution { public ListNode removeElements(ListNode head, int val) { if(head==null){ return head; } ListNode currentNode=head; ListNode nextNode=head.next; while(nextNode!=null){ if(nextNode.val==val){ currentNode.next=nextNode.next; }else{ currentNode=nextNode; } nextNode=nextNode.next; } //删除头结点 if(head.val==val){ head=head.next; } return head; } } //添加虚节点版本 class Solution { public ListNode removeElements(ListNode head, int val) { if(head==null){ return head; } ListNode dummy = new ListNode(-1,head); ListNode pre = dummy; ListNode cur = head; while(cur!=null){ if(cur.val==val){ pre.next=cur.next; }else{ pre=cur; } cur=cur.next; } head=dummy.next; return head; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)