博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
remove-duplicates-from-sorted-list I&II——去除链表中重复项
阅读量:6295 次
发布时间:2019-06-22

本文共 1977 字,大约阅读时间需要 6 分钟。

I、Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,

Given1->1->2, return1->2.
Given1->1->2->3->3, return1->2->3.

 

PS:遍历,而后记录pre,并删除后续重复node

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *deleteDuplicates(ListNode *head) {12         ListNode *cur=head,*pre=NULL;13         while(cur!=NULL){14             if(pre==NULL){15                 pre=cur;16                 cur=cur->next;17                 continue;18             }19             ListNode *next=cur->next;20             if(pre->val==cur->val){21                 pre->next=next;22             }else23                 pre=cur;24             cur=next;25         }26         return head;27     }28 };

II、

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,

Given1->2->3->3->4->4->5, return1->2->5.
Given1->1->1->2->3, return2->3.

 

删除所有重复项。

PS:循环比较next->val==cur->val,若next跳动则剔除cur至next之间的节点。否则右移left指针。

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *deleteDuplicates(ListNode *head) {12         if(head==NULL) return NULL;13         ListNode h(-1);14         ListNode *res=&h;15         res->next=head;16         ListNode *cur=head,*pre=NULL,*left=res;17         while(cur!=NULL){18             ListNode* next=cur->next;19             while(next!=NULL&&cur->val==next->val){20                 next=next->next;21             }22             if(next==cur->next){23                 left=cur;24             }else{25                 left->next=next;26             }27             cur=next;28         }29         return res->next;30     }31 };

 

转载地址:http://akvta.baihongyu.com/

你可能感兴趣的文章
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>
mysql性能的检查和调优方法
查看>>