给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 |
---|
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3 | |
和剑指offer中的链表问题题设不相同,此题要求保留一个有重复的元素。
设置俩个指针,p,q,分别代表当前节点和当前节点的next。
- 将q指针往后移动,指向第一个和p.val不相同的节点, 通过next连接。p.next=q;
- p=q,q再重新指向下一个节点。
- 重复迭代的过程。
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null){
return head;
}
ListNode p=head ;
ListNode q=p.next;
while(p!=null&& q!=null){
while(q!=null && p.val==q.val){
q=q.next;
}
p.next=q;
p=q;
if(p!=null){
q=p.next;
}
}
return head;
}
}