给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

    示例 1:

    输入:head = [1,1,2]
    输出:[1,2]
    示例 2:

    输入:head = [1,1,2,3,3]
    输出:[1,2,3]

    1. /**
    2. * Definition for singly-linked list.
    3. * function ListNode(val, next) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.next = (next===undefined ? null : next)
    6. * }
    7. */
    8. /**
    9. * @param {ListNode} head
    10. * @return {ListNode}
    11. */
    12. var deleteDuplicates = function (head) {
    13. // 1.题目中已排序,告诉我们所以重复链表都相同
    14. // 2.删除相同,这道题比较简单
    15. let p = head;
    16. // 循环,因为要与下一个值作比较,所以也要进行判断
    17. while (p && p.next) {
    18. if (p.val === p.next.val) {
    19. // 删除下一个
    20. p.next = p.next.next
    21. } else {
    22. // 这边要注意的是继续下一步时要考虑的可能后面也相同,所以我们让循环多执行一次
    23. p = p.next
    24. }
    25. }
    26. // 直接返回原链表即可
    27. return head
    28. };

    image.png