【Leetcode】删除链表中的重复元素
【摘要】 一、题目
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,
使每个元素只出现一次。返回同样按升序排列的结果链表。
12
二、解析
对于此题,我的解题步骤如下:
创建两个指针pre、curr,分别表示历史指针、当前指针。从链表的首位置开始,移动curr一步,并与pre的值相比较。如果相同,则跳过中间指针,将pre指向cur...
一、题目
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,
使每个元素只出现一次。返回同样按升序排列的结果链表。
二、解析
对于此题,我的解题步骤如下:
- 创建两个指针pre、curr,分别表示历史指针、当前指针。
- 从链表的首位置开始,移动curr一步,并与pre的值相比较。
- 如果相同,则跳过中间指针,将pre指向curr->next。但此时不更新pre,因为还需确定下一个元素是否与pre相同; 如果不同,则跟新pre。
- 重复2、3步骤。
三、实现
以上思路,通过C++实现如下:
/**
* 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) {}
* };
*/
class Solution {
public: ListNode* deleteDuplicates(ListNode* head) { ListNode* curr = head; ListNode* pre = curr; while(curr != nullptr) { curr = curr -> next; if(curr != nullptr && curr->val == pre->val) //前后值一样 { pre->next = curr->next; //跳过重复的节点 } else { pre = curr; // 如果不是重复,则更新pre } } return head; }
};
提交结果如下:
文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。
原文链接:ai-wx.blog.csdn.net/article/details/118461039
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)