题目
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDucurrent_nodelicates(struct ListNode* head) {
//在此处编写代码
}
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
题解
思路:水,判断下一个节点的val是否与当前节点val相同,相同则删除下一节点
note:注意空链表
struct ListNode* deleteDucurrent_nodelicates(struct ListNode* head) {
if (head == NULL) return NULL;
struct ListNode *current_node = head, *delete_node;
while (current_node->next != NULL) {
delete_node = current_node->next;
if (delete_node->val == current_node->val) {
current_node->next = delete_node->next;
free(delete_node);
} else {
current_node = current_node->next;
}
}
return head;
}
LeetCode习题汇总