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) {
    }
}