思路:双指针。
一个指针a负责串起来不重复的元素,一个指针b负责寻找不重复的元素。
- 如果下一个节点的值与当前节点值相等,那么移动指针b到下一个不相等的节点;
- 否则把当前节点串到a指针。
代码:
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
ListNode pre = new ListNode(0);
ListNode cur = pre;
while (head != null) {
if (head.next != null && head.next.val == head.val) {
int temp = head.val;
while (head != null) {
if (head.val == temp) {
head = head.next;
}
else {
break;
}
}
}
else {
cur.next = head;
head = head.next;
cur = cur.next;
cur.next = null;
}
}
return pre.next;
}
}