力扣算法 - 移除鏈表元素

移除鏈表元素

刪除鏈表中等于給定值 val 的所有節(jié)點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5

思路:
定義一個虛擬頭結點, newNode = ListNode(0) 從頭部往尾部循環(huán), 取 newNode.next.val == 給定的val 
例如 A-> B-> C-> D  要刪除 C ( B.next ) 只需要 A-> B -> D
B .next = D   即 是  B.next = B.next.next
Java實現(xiàn)
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        ListNode newNode = new ListNode(0);
        newNode.next = head;

        ListNode node = newNode;
        while (newNode.next != null) {
            if (newNode.next.val == val) {
                newNode.next = newNode.next.next;
            } else {
                newNode = newNode.next;
            }
        }
        return node.next;
    }
Swift實現(xiàn)
    func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
        if head == nil {
            return nil
        }
        var newHead = ListNode(0)
        newHead.next = head
        let node = newHead
        
        while newHead.next != nil {
            if newHead.next?.val == val {
                newHead.next = newHead.next?.next
            } else {
                newHead = newHead.next!
            }
        }
        
        return node.next
        
    }
    
     public class ListNode {
        public var val: Int
        public var next: ListNode?
        public init(_ val: Int) {
            self.val = val
            self.next = nil
        }
    }

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容