天天看點

237. 删除連結清單中的節點(簡單題)

題目描述:

請編寫一個函數,使其可以删除某個連結清單中給定的(非末尾)節點,你将隻被給定要求被删除的節點。

現有一個連結清單 – head = [4,5,1,9],它可以表示為:

示例 1:

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

輸出: [4,1,9]

解釋: 給定你連結清單中值為 5 的第二個節點,那麼在調用了你的函數之後,該連結清單應變為 4 -> 1 -> 9.

示例 2:

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

輸出: [4,5,9]

解釋: 給定你連結清單中值為 1 的第三個節點,那麼在調用了你的函數之後,該連結清單應變為 4 -> 5 -> 9.

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/delete-node-in-a-linked-list

著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

解法:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}
           

思路概述:

這一題沒有給頭結點,是以不能用平常方式來删除指定的節點。隻給出了需要删除節點的位置,但是要想删除這個節點,我們需要通過該節點的上一個節點來操作,是以無法實作。但是我們可以輕松的删除下一個節點,同時将應該被删除卻被保留的節點儲存真正被删除節點的資訊,也就變相的完成了删除指定節點的操作。