题目
给定一个排序链表,删除所有重复的元素使得每个元素只留下一个。
案例:
给定 1->1->2
,返回 1->2
给定 1->1->2->3->3
,返回 1->2->3
分析
链表的问题,因为是有序的所以判断一下当前节点的next节点的val值 和 当前节点的val值是否相等,相等则删除它的next节点,不相等则进行下一个节点的判断。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null)
return null;
for (ListNode temp = head; temp.next != null;) {
while (temp.next.val == temp.val && temp.next.next != null)
temp.next = temp.next.next;
if (temp.next.next == null && temp.val == temp.next.val){
temp.next = null;
return head;
}
temp = temp.next;
}
return head;
}
}