LeetCode 83. 删除排序链表中的重复元素 Remove Duplicates from Sorted List (Easy)
2021-02-02 04:15
标签:出现 style 链表 lis 元素 题目 code 删除链表 一个 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输入: 1->1->2->3->3 来源:力扣(LeetCode) 解法一:循环删除重复节点。 解法二:递归删除重复节点,思路一致。 类似题目:《剑指offer》第十八题II:删除链表中重复的结点 LeetCode 83. 删除排序链表中的重复元素 Remove Duplicates from Sorted List (Easy) 标签:出现 style 链表 lis 元素 题目 code 删除链表 一个 原文地址:https://www.cnblogs.com/ZSY-blog/p/12805939.html
输出: 1->2
示例 2:
输出: 1->2->3/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr)
return head;
ListNode* pNode = head;
while (pNode != nullptr)
{
ListNode* pNext = pNode->next; //下一节点
//下一节点不为空, 而且和当前节点相等, 一直删除
while (pNext != nullptr && pNode->val == pNext->val)
{
pNext = pNext->next;
pNode->next = pNext; //越过下一个重复节点
}
//否则去下一个节点
pNode = pNode->next;
if (pNext != nullptr)
pNext = pNext->next;
}
return head;
}
};
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr)
return head;
head->next = deleteDuplicates(head->next);
return (head->val == head->next->val) ? head->next : head;
}
};
上一篇:二、Python安装
文章标题:LeetCode 83. 删除排序链表中的重复元素 Remove Duplicates from Sorted List (Easy)
文章链接:http://soscw.com/essay/49802.html