LeetCode 083. Remove Duplicates from Sorted List (Easy)

给出一个有序链表,去除其中的重复元素。

原始问题

https://leetcode.com/problems/remove-duplicates-from-sorted-list/

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

解题思路

因为链表是有序的,直接从头循环搜索一遍即可。

AC代码

C语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode * p = head;
struct ListNode * tmp;

if(head == NULL) {
return NULL;
}

while(p->next != NULL) {
if (p->val == p->next->val) {
tmp = p->next;
p->next = p->next->next;
free(tmp);
} else {
p = p->next;
}
}

return head;
}

这里使用了正确的删除节点的方法,使用free()释放了内存空间。

文章目录
  1. 1. 原始问题
  2. 2. 解题思路
  3. 3. AC代码
    1. 3.1. C语言