LeetCode之“链表”:Remove Duplicates from Sorted List && Remove Duplicates from Sorted List II
2015-06-26 16:13
417 查看
1. Remove Duplicates from Sorted List
题目链接题目要求:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given
1->1->2, return
1->2.
Given
1->1->2->3->3, return
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 || !head->next) return head; int preVal = head->val; ListNode *preNode = head; ListNode *start = head->next; while(start) { while(start && start->val == preNode->val) { ListNode *next = start->next; preNode->next = next; delete start; start = next; } if(!start) break; preNode = start; start = start->next; } return head; } };
2. Remove Duplicates from Sorted List II
题目链接题目要求:
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.
该题可以通过添加dummy节点以方便编程。具体程序如下:
/** * 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 || !head->next) return head; int preVal = head->val; ListNode *dummy = new ListNode(0); dummy->next = head; ListNode *prepreNode = dummy, *preNode = head; ListNode *start = head->next; while(start) { bool flag = true; while(start && start->val == preNode->val) { flag = false; ListNode *next = start->next; preNode->next = next; delete start; start = next; } if(flag) { prepreNode = preNode; preNode = preNode->next; } else { prepreNode->next = preNode->next; delete preNode; preNode = prepreNode->next; } if(!preNode || !preNode->next) break; start = preNode->next; } head = dummy->next; delete dummy; dummy = nullptr; return head; } };
相关文章推荐
- 让Struts2.3.24支持JDK1.5
- “标准”宏与函数模板
- android 一个很漂亮的控件ObservableScrollView(含片段代码和源码)
- 《C#程序设计》第四次作业
- selenium2/webdriver基础知识
- Linux sed 批量替换多个文件中的字符串
- android listview局部刷新和模拟应用下载
- LeetCode_57---Insert Interval
- 关闭程序立即重启出现Address already in use
- postgresql归档备份
- A new starting ...
- 11个超棒的iOS开发学习网站
- poj 1456 Supermarket(并查集维护区间)
- 下载文件,ie文件名乱码问题
- Unity3D读取XML文档信息
- android AlertDialog 错误 OnClickListener 报错
- 获取.propertys文件获取文件内容
- 面试题11:数值的整数次方
- 在 linux 下使用 CMake 构建应用程序
- eclipse提示An SWT error has occurred 怎么处理?