【一天一道LeetCode】#82. Remove Duplicates from Sorted List II
2024-08-29 02:02:01
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 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==NULL) return head;//链表为空
ListNode* newHead = NULL;//新链表头
ListNode* newtail = NULL;//新链表位
ListNode* p = head;
bool ishead = true;//确定新链表的头
while(p!=NULL)
{
ListNode* pnext = p->next;
int count = 1;
while(pnext!=NULL&&pnext->val==p->val) {//后续节点与p是否重复
count++;
pnext = pnext->next;
}
if(count==1){//等于1代表没有重复
if(ishead) {newHead = p;newtail = newHead;newtail->next=NULL;ishead =false;}//头结点需要特殊处理
else {
newtail->next = p;
newtail = newtail->next;
newtail->next=NULL;//这里注意一定要将尾节点的next指向NULL,不然就指向原链表的p的下一个了
}
}
p = pnext;
}
return newHead;
}
};
最新文章
- laravel框架总结(十二) -- 关联关系
- github:如何获取项目源代码
- Python 学习---------Day1
- windows server 远程连接设置
- [深入浅出WP8.1(Runtime)]数据绑定的基础
- 未知的系统错误(The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.)
- spring相关资源
- PHPCMS-首页的二级导航、轮播效果
- Redis数据库?-Redis的Virtual Memory介绍(转)
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
- 制作Android Demo GIF:程序演示效果GIF图录制
- c指针点滴-指针与类型
- django开发简易博客(三)
- 我在vs文本编辑中常用的快捷键----常更新
- android系统添加预置APP(so库自动释放)
- C#进阶系列——WebApi 跨域问题解决方案:CORS(转载)
- Java 基础 集合框架
- Linux下Mysql安装(RPM安装)
- 11.2.0.4单实例DRCP(Database Resident Connection Pooling)简单测试
- Android,XML解析