处理排序链表
保证数字只出现一次
leetcode83
如果下一个点和当前点不同,则删除下一个点
如果下一个点和当前点相同,则移动到下一个点
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode curr = head;
while(curr != null){
//下一个点不为空;下一个点等于当前点
if(curr.next != null && curr.val == curr.next.val)
curr.next = curr.next.next;
else
//不相等;移到下一个点
curr = curr.next;
}
return head;
}
}
删除所有重复
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//可能删除头节点
ListNode result = new ListNode(0);
result.next = head;
ListNode curr = result;
//需要判断curr.next.next
while(curr.next != null){
ListNode deleteNode = curr.next;
//curr在重复结点的前一位 1 3 3 4则在 1
//deleteNode移动到重复结点的后一位 1 3 3 4 则到 4
while(deleteNode != null && curr.next.val == deleteNode.val)
deleteNode = deleteNode.next;
// 1.next.next = 3 != 4
if(curr.next.next == deleteNode)
curr = curr.next;
else
// 1.next = 4
curr.next = deleteNode;
}
return result.next;
}
}