2020年6月2日 星期二

Leetcode題解 Python & C#:六月挑戰DAY2 Delete Node in a Linked List

寫一個功能去從一 linked list 中刪除一個 node,會給那個要被刪除的 node。

這題真的難到我了,在第一眼看到的時候。明明有兩個input,怎麼只傳入一個node?一旦看懂之後就很簡單了。

如果要刪除一個node,那最簡單的方式就是把它上一個跟它下一個接起來,但是這裡沒有上一個,而是直接給要刪除的node。

沒辦法修改實例位置完成,那就修改屬性。

原:A「B」CD -> A「」CD -> ACD
此:A「B」CD -> A「C」CD (修改值) -> AC「C」D -> AC「」D -> ACD

要刪除的node的值改成下一個的值,next改成下一個的next,即可。(但是無法刪最後一個node,題目也有說不會刪最後一個)

Python
class Solution:
    def deleteNode(self, node):
        """
        :type node: ListNode
        :rtype: void Do not return anything, modify node in-place instead.
        """
        node.val = node.next.val
        node.next = node.next.next
C#
public class Solution {
    public void DeleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}