領釦——203.移除連結串列元素
阿新 • • 發佈:2018-11-09
領釦——203.移除連結串列元素
刪除連結串列中等於給定值 val 的所有節點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { //不要被head符號迷惑了,第一個迴圈是刪除值為val的節點,直到第一個不為val的出現,如果都是val,則返回的head為空,否則第一個不為val的出現了,思想是用雙指標來操作,碰到有val的節點直接將前一個節點的next指向下下個,也就是不為val的那個,再移動curr指標,指到現在這個節點,如果沒有碰到val值,就移動兩個指標,直到curr為空。 while(head!=null&&head.val==val) head=head.next; if(head==null) return head; ListNode pre=head; ListNode curr=head.next; while(curr!=null){ if(curr.val==val){ pre.next=curr.next; curr=curr.next; }else{ pre=curr; curr=curr.next; } } return head; } }