package leecode;
/**
* 83. 删除排序链表中的重复元素
*
* 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
*
* 返回同样按升序排列的结果链表。
*
* @author Tang
* @date 2021/10/22
*/
public class DeleteDuplicates {
/**
* 利用快慢指针
* 快指针顺序遍历
* 当快指针的值与慢指针的值不相同时,慢指针的下一个指向快指针,慢指针等于快指针,
* 最后将慢指针的下一个值置空(干掉后续的重复值)
*
* @param head
* @return
*/
public ListNode deleteDuplicates(ListNode head) {
if(head == null) {
return null;
}
ListNode fast = head;
ListNode slow = head;
while(fast != null) {
if(fast.val != slow.val) {
slow.next = fast;
slow = fast;
}
fast = fast.next;
}
slow.next = null;
return head;
}
public static void main(String[] args) {
}
}