免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
タイトル説明
各要素は1回だけ発生するようにソートされたリストを考えると、すべての重複要素を削除します。
トピックの例
入力: 1 - > 1 - > 2 出力: 1 - > 2
問題解決のためのアイデア
1>:反復法
繰り返しの要素が直接カバーされた場合は、もう一度それを横断するだけで必要な重複要素を削除します。
注意事項:
- 非空のテスト
- 最初のノードへの参照を保持します
- 1-> 1-> 1-> 1として、連続的に繰り返される場合ことに注意してください
- そのノードが繰り返さによって引き起こさテール・ノードnullポインタの問題であることに注意してください
コードの実装
public class DeleteDuplicates {
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public ListNode deleteDuplicates(ListNode head) {
//非空检验
if(head == null){
return head;
}
//保留头结点引用
ListNode res = head;
//遍历删除重复节点
while(head.next != null){
//重复节点
if(head.val == head.next.val){
//到达尾节点
if(head.next.next != null){
head.next = head.next.next;
}else{
//没有到达尾节点
head.next = null;
break;
}
}else{
//非重复节点
head = head.next;
}
}
return res;
}
}