1. 程式人生 > >領釦——203.移除連結串列元素

領釦——203.移除連結串列元素

領釦——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;
    }
}