leetcode 203--linked list

  • 注意情況
  1. 如果t1指向目標的前一個位置,t1->next是val: 刪除後 不可以下移一位,當前的t1就是我們需要的位置---下一個需要判斷的前一個節點。


  2. while循環中的判斷就不用加上while(t1!=nullptr) 這樣速度會快很多。

C++:

ListNode* removeElements(ListNode* head, int val) {
        ListNode* Ariana=new ListNode(-1),*t1=Ariana;
        Ariana->next=head;
        while(t1->next!=nullptr){
            if(t1->next->val==val){
                auto t2=t1->next;
                t1->next=t2->next;
                delete(t2);
            }
            else
                t1=t1->next;
        }
        return Ariana->next;
    }

JAVA:

public ListNode removeElements(ListNode head, int val) {
        ListNode Ariana=new ListNode(-1),t1=Ariana;
        Ariana.next=head;
        while(t1.next!=null){
            if(t1.next.val==val){
                ListNode t2=t1.next;
                t1.next=t2.next;
            }
            else
                t1=t1.next;
        }
        return Ariana.next;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章