## 83. Remove Duplicates from Sorted List

Given the `head`

of a sorted linked list, *delete all duplicates such that each element appears only once*. Return *the linked list sorted as well*.

**Example 1:**

Input:head = [1,1,2]Output:[1,2]

**Example 2:**

Input:head = [1,1,2,3,3]Output:[1,2,3]

**Constraints:**

- The number of nodes in the list is in the range
`[0, 300]`

. `-100 <= Node.val <= 100`

- The list is guaranteed to be
**sorted**in ascending order.

## Rust Solution

```
struct Solution;
use rustgym_util::*;
impl Solution {
fn delete_duplicates(mut head: ListLink) -> ListLink {
let mut p = head.as_mut();
while let Some(n) = p {
while let Some(m) = n.next.as_mut() {
if m.val != n.val {
break;
}
n.next = m.next.take();
}
p = n.next.as_mut();
}
head
}
}
#[test]
fn test() {
let p = list!(1, 1, 2, 3, 3);
let q = list!(1, 2, 3);
assert_eq!(Solution::delete_duplicates(p), q);
}
```

Having problems with this solution? Click here to submit an issue on github.