题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
题目示例
输入: 1->1->2 输出: 1->2
解题思路
1>:迭代解法
要删除重复的元素,即只需要遍历一遍即可,如果发现重复的元素直接覆盖。
注意事项:
- 非空检验
- 保留头结点引用
- 注意连续重复情况,如1->1->1->1
- 注意尾节点是重复节点导致的空指针问题
代码实现
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;
}
}