1. 程式人生 > >LeetCode演算法題-Delete Node in a Linked List(Java實現)

LeetCode演算法題-Delete Node in a Linked List(Java實現)

這是悅樂書的第197次更新,第204篇原創

01 看題和準備

今天介紹的是LeetCode演算法題中Easy級別的第60題(順位題號是235)。編寫一個函式來刪除單鏈表中的節點(尾部除外),只允許訪問該節點。例如:

鑑於連結串列 - head = [4,5,1,9],如下所示:

4 - > 5 - > 1 - > 9

輸入:head = [4,5,1,9],node = 5

輸出:[4,1,9]

說明:您將獲得值為5的第二個節點,即連結串列呼叫你的函式後應該變成4 - > 1 - > 9。


輸入:head = [4,5,1,9],node = 1

產出:[4,5,9]

說明:您將獲得值為1的第三個節點,即連結串列在呼叫你的函式後應該變成4 - > 5 - > 9。


注意

  • 連結串列至少有兩個元素。

  • 所有節點的值都是唯一的。

  • 給定節點不是尾部,它始終是連結串列的有效節點。

  • 不要從你的功能中返回任何東西。

本次解題使用的開發工具是eclipse,jdk使用的版本是1.8,環境是win7 64位系統,使用Java語言編寫和測試。

02 解題

傳入的引數node,是要刪除掉的節點,也就是需要跳過node。先將當前節點的值用其下一個節點的值覆蓋掉,然後node的下一個節點指向其下下個節點。

public void deleteNode(ListNode node) {
    node.val = node.next.val;
    node.next = node.next.next;
}


03 小結

演算法專題目前已連續日更超過一個月,演算法題文章60+篇,公眾號對話方塊回覆【資料結構與演算法】、【演算法】、【資料結構】中的任一關鍵詞,獲取系列文章合集。

以上就是全部內容,如果大家有什麼好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支援!