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

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

CategoryDifficultyLikesDislikes
algorithmsEasy (49.10%)260-

Tags

linked-list

Companies

Unknown

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

示例  1:

1
2
输入: 1->1->2
输出: 1->2

示例  2:

1
2
输入: 1->1->2->3->3
输出: 1->2->3

Discussion | Solution

解法

 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
27
28
29
30
31
32
33
34
35
36
37
38
// @lc code=start
// Definition for singly-linked list.
// #[derive(PartialEq, Eq, Clone, Debug)]
// pub struct ListNode {
//   pub val: i32,
//   pub next: Option<Box<ListNode>>
// }
//
// impl ListNode {
//   #[inline]
//   fn new(val: i32) -> Self {
//     ListNode {
//       next: None,
//       val
//     }
//   }
// }
impl Solution {
    pub fn delete_duplicates(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
        if head.is_none() {
            return None;
        }

        let mut h = head;
        let mut p1 = h.as_mut().unwrap();
        while let Some(p2) = p1.next.as_mut() {
            if p2.val == p1.val {
                p1.next = p2.next.take();
            } else {
                p1 = p1.next.as_mut().unwrap();
            }
        }

        h
    }
}
// @lc code=end

updatedupdated2024-08-252024-08-25