leetcode 83. Remove Duplicates from Sorted List-爱代码爱编程
83. Remove Duplicates from Sorted List
难度:easy
问题描述:
Given a sorted linked list, delete all duplicates such that each element appear only once.
中文:移除重复的节点
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
解法1:
简单暴力的遍历,注意判断空链表:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
ListNode* deleteDuplicates(ListNode* head) {
if(head == nullptr) return nullptr;
ListNode* h = head;
while(head->next != nullptr){
if(head ->val != head->next->val){
head = head->next;
}else{
head->next = head->next->next;
}
}
return h;
}
解法2:
递归法,判断前一个是否和后一个相等,如果相等则返回后一个。
ListNode* deleteDuplicates(ListNode* head) {
if (!head || !head->next) return head;
head->next = deleteDuplicates(head->next);
return (head->val == head->next->val) ? head->next : head;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/makeyy123/article/details/111037960