0%

LeetCode.删除排序链表中的重复元素

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

  • 示例 1:
    输入: 1->1->2
    输出: 1->2
  • 示例 2:
    输入: 1->1->2->3->3
    输出: 1->2->3

    解法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    object RemoveLinkedListRepeatNode {
    def main(args: Array[String]): Unit = {
    println(deleteDuplicates(ListNode(1, ListNode(1, null))))
    println(deleteDuplicates(ListNode(1, ListNode(1, ListNode(2, null)))))
    println(deleteDuplicates(ListNode(1, ListNode(1, ListNode(2, ListNode(2, null))))))
    }

    def deleteDuplicates(head: ListNode): ListNode = {
    if (head == null || head.next == null) return head
    val res = head
    var i = head
    var j = head.next
    while (j != null) {
    while (i.x == j.x && j.next != null) j = j.next
    if (i.x != j.x) {
    i.next = j
    i = j
    }
    j = j.next
    i.next = null
    }

    res
    }
    case class ListNode(x: Int, var next: ListNode)
    }