説明:
そのノードへのアクセスのみ与えられ、単独リンクリストに(尾を除く)ノードを削除する関数を書きます。
:ヘッド= [4,5,1,9]、以下のようになります - リンクリストを考えます
実施例1:
入力:ヘッド= [4,5,1,9]、ノードは= 5
出力: [4,1,9]
説明:あなたは値5と第2のノードが与えられ、リンクされたリストは、4になるはず- > 1 - > 9あなたの関数を呼び出した後。
実施例2:
入力:ヘッド= [4,5,1,9]、ノード= 1つの
出力: [4,5,9]
説明:あなたは値1と第3のノードが与えられ、リンクされたリストは、4になるはず- > 5 - > 9あなたの関数を呼び出した後。
注意:
- リンクされたリストには、少なくとも2つの要素を持つことになります。
- ノードの値のすべてがユニークになります。
- 指定されたノードは尾ではありません、それは常にリンクされたリストの有効なノードになります。
- あなたの関数から何も返さないでください。
トピック説明:
指定されたノードが削除されるために与えられたリスト(非エンド)ノードを削除することを可能にする関数を記述してください、あなただけ必要となります。
既存のリスト - ヘッド= [4,5,1,9]、それはのように表すことができます。
例1:
入力:ヘッド= [4,5,1,9]、5 =ノードの
出力: [4,1,9]
説明:あなたを呼び出して、値が2番目のノード5であるあなたのリストを考えます> 1 - - > 9菌株リスト4の機能を後に。
例2:
入力:ヘッド= [4,5,1,9]、ノード= 1つの
出力: [4,5,9]
説明:あなたを呼び出して、値1である、あなたの第3のノードのリストを考えます> 5 - - > 9菌株リスト4の機能を後に。
説明:
- 少なくとも二つのノードを含むリスト。
- リスト内のすべてのノードの値がユニークです。
- 非指定されたノードおよびエンド・ノードは、リンクされたリスト内の有効なノードでなければなりません。
- あなたの関数から結果を返しません。
アイデア:
場所に次のノードに、ノードが最後のノードではないことに留意、ノード点を削除
(1)O(1)、空間複雑性Oの時間複雑
コード:
C ++:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node -> val = node -> next -> val;
node -> next = node -> next -> next;
}
};
Javaの:
/**
* 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;
}
}
Pythonの:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val, node.next = node.next.val,node.next.next