LeetCode 203-移除鏈表節點

 

1. 移除鏈表節點

public class RemoveElements203 {
    //定義一個單鏈表
    public class ListNode {
        int val;           //當前節點值
        ListNode next;     //下一個節點值
        //構造方法 初始化當前節點值
        ListNode(int x) { val = x; }
    }

    /**移除鏈表節點
     *時間複雜度 O(n)
     * @param head
     * @param val
     * @return
     */
    public ListNode removeElements(ListNode head, int val) {
        //增加啞元節點 用來定位頭結點
        ListNode sentinel = new ListNode(0);
        sentinel.next = head;
        //創建前節點 和 當前節點
        ListNode prev = sentinel, curr = head;
        //當前節點不爲空一直循環,直到鏈表結束
        while (curr != null) {
            //當前節點值等於給定值 當前節點的前節點next指向當前節點的下一個節點
            if (curr.val == val){
                prev.next = curr.next;
            //當前節點值不等於給定值 讓前指針向前移動一位 前節點等於當前節點
            } else{
                prev = curr;
            }
            //讓指針向後移動一位 判斷下一個節點是否爲空
            curr = curr.next;
        }
        return sentinel.next;
    }
}

 

2. LeetCode代碼測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章