題目描述:
請編寫一個函數,使其可以删除某個連結清單中給定的(非末尾)節點,你将隻被給定要求被删除的節點。
現有一個連結清單 – 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;
}
}
思路概述:
這一題沒有給頭結點,是以不能用平常方式來删除指定的節點。隻給出了需要删除節點的位置,但是要想删除這個節點,我們需要通過該節點的上一個節點來操作,是以無法實作。但是我們可以輕松的删除下一個節點,同時将應該被删除卻被保留的節點儲存真正被删除節點的資訊,也就變相的完成了删除指定節點的操作。