Remove Duplicates from Sorted List II
2015-07-27 16:01
381 查看
描述
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.
中文:删除掉所有含有重复元素的结点。
分析:如果此元素与下一个元素是重复的,则删除此元素。
并且记录该元素是否重复。
根据上面的重复标志位,决定最后是否删除该元素。
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.
中文:删除掉所有含有重复元素的结点。
分析:如果此元素与下一个元素是重复的,则删除此元素。
并且记录该元素是否重复。
根据上面的重复标志位,决定最后是否删除该元素。
class Solution { public: ListNode *deleteDuplicates(ListNode *head) { if (head == nullptr) return head; ListNode dummy(INT_MIN); //定义一个头结点 dummy.next = head;//让头结点指向链表第一个节点 ListNode *prev = &dummy, *cur = head;//定义两个指针结点 while (cur != nullptr) { bool duplicated = false; while (cur->next != nullptr && cur->val == cur->next->val) { duplicated = true; ListNode *temp = cur; cur = cur->next; delete temp; } if (duplicated) { // 根据重复位的标志,判断是否删除重复的最后一个元素 ListNode *temp = cur; cur = cur->next; delete temp; continue; } prev->next = cur; prev = prev->next; cur = cur->next; } prev->next = cur; return dummy.next; } };
相关文章推荐
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- 基于android eclipse的JNI 构建-常用命令笔记
- MapReduce架构和算法(2)
- Lua与C++ 第四篇(获取Lua表结构数据)
- ImageView 的 ScaleType
- 史上最全的Excel数据编辑处理技巧(转)
- jsp引用js和css路径问题
- C# Regex 类
- Redhat 7 配置-----破解ROOT密码
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
- 初识双网卡
- 关于Activity突然重启
- AD 软件使用心得记录
- virbr0 虚拟网卡卸载方法-技术宅-ChinaUnix博客
- Windows Server 2008 R2域控时间同步internet时间
- Web工程获取目录下的资源
- 完整java开发中JDBC连接数据库代码和步骤
- 图片中hspace 和 vspace 属性
- Scala练习(二)
- Linux配置nodejs