剣指Offerの削除ソートチェーンテーブルの重複ノード
説明:
この問題は2種類のバージョンがあり、力ボタンと牛客は異なるバージョンで、まず力ボタンの上の簡単なバージョンを見ます.
タイトルの説明:
スナップショット:ソートチェーンテーブルを指定し、重複するすべての要素を削除して、各要素が1回しか表示されないようにします.
入力:1->1->2出力:1->2
重複する要素は1つしか残っていないことがわかります.
参照コード:
牛客網のちょっと難しい問題を見てみましょう.
タイトルの説明:
牛客:ソートされたチェーンテーブルに重複するノードがあります.チェーンテーブルの重複するノードを削除してください.重複するノードは保持されず、チェーンテーブルのヘッダーポインタに戻ります.例えば、チェーンテーブル1−>2−>3−>3−>4−>4−>5の処理後は1−>2−>5である
上記の問題との違いは、重複するノードがすべて削除されていることがわかります.
参照コード:
まとめ
见ることができて、问题の1字の差、コードは多くなって、だから后で问题をするのはやはり先に问题の意味を明らかにして、更に解决します.
(完)
この問題は2種類のバージョンがあり、力ボタンと牛客は異なるバージョンで、まず力ボタンの上の簡単なバージョンを見ます.
タイトルの説明:
スナップショット:ソートチェーンテーブルを指定し、重複するすべての要素を削除して、各要素が1回しか表示されないようにします.
入力:1->1->2出力:1->2
重複する要素は1つしか残っていないことがわかります.
参照コード:
public ListNode deleteDuplicates(ListNode head) {
if(head == null)return head;
ListNode p = head;
while(p != null && p.next != null){
if(p.val == p.next.val)p.next = p.next.next;
else p = p.next;
}
return head;
}
牛客網のちょっと難しい問題を見てみましょう.
タイトルの説明:
牛客:ソートされたチェーンテーブルに重複するノードがあります.チェーンテーブルの重複するノードを削除してください.重複するノードは保持されず、チェーンテーブルのヘッダーポインタに戻ります.例えば、チェーンテーブル1−>2−>3−>3−>4−>4−>5の処理後は1−>2−>5である
上記の問題との違いは、重複するノードがすべて削除されていることがわかります.
参照コード:
public ListNode deleteDuplication(ListNode head){
if(head == null)return head;
//
ListNode v = new ListNode(-1);
v.next = head;
// 2 ,
ListNode curr = head;
ListNode pre = v;
//
while(curr != null){
// if else
if(curr.next != null && curr.val == curr.next.val){
curr = curr.next;
while(curr.next != null && curr.val== curr.next.val){
curr = curr.next;
}
curr = curr.next;// curr
pre.next = curr;//
}
else{
pre = curr;
curr = curr.next;
}
}
return v.next;
}
まとめ
见ることができて、问题の1字の差、コードは多くなって、だから后で问题をするのはやはり先に问题の意味を明らかにして、更に解决します.
(完)