Leetcode[82]-Remove Duplicates from Sorted List II
2015-06-10 20:33
423 查看
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given
Given
思路:跟上道题Leetcode[83]-Remove Duplicates from Sorted List算法有点区别,这道题需要设置一个标示符,如果某一趟比较的时候两个元素相等了,就设flag等于true,接着下一趟循环如果两个元素不相等,但此时的flag为true,就需要将两个元素前面的那个删掉。
最后,必定第二个元素为空而终止,此时还需要判断flag是否为true,如果为true,则末尾的元素还需要删掉;
代码如下:
Code(c++):
For example,
Given
1->2->3->3->4->4->5, return
1->2->5.
Given
1->1->1->2->3, return
2->3.
思路:跟上道题Leetcode[83]-Remove Duplicates from Sorted List算法有点区别,这道题需要设置一个标示符,如果某一趟比较的时候两个元素相等了,就设flag等于true,接着下一趟循环如果两个元素不相等,但此时的flag为true,就需要将两个元素前面的那个删掉。
最后,必定第二个元素为空而终止,此时还需要判断flag是否为true,如果为true,则末尾的元素还需要删掉;
代码如下:
Code(c++):
/** * 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) { ListNode * newList = new ListNode(-1); newList->next = head; ListNode *pre = newList; bool flag = false; while(pre->next && pre->next->next){ if(pre->next->val == pre->next->next->val){ pre->next = pre->next->next; flag = true; continue; } if(flag == true){ pre->next = pre->next->next; flag = false; continue; } pre = pre->next; } //最后还需要判断是否上次判断时元素重复 if(flag == true){ pre->next = pre->next->next; } head = newList->next; return head; } };
相关文章推荐
- poj 1062 最短路
- HTML5之FileReader的使用
- hdu3015 Disharmony Trees
- canjs基础教程之Route
- springmvc 开涛 注解式控制器
- hdu 1556 Color the ball
- 字节对齐导致sizeof()比实际更大
- JSONObject 试错
- 已定义的函数有返回值,函数调用可以作为一个函数的实参,但是不能作为形参
- 如何花两年时间面试一个人
- CPU读取磁盘数据的操作时序(CPU和磁盘控制器)
- Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】
- cxf框架和spring框架集成的Webservice例子
- Android中的android:layout_width和android:width
- 企业如何快速搭建大数据处理系统
- Convert Sorted Array to Binary Search Tree
- python解析pcap文件中的http数据包
- 五大算法---分治算法
- BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐( dfs )
- Visual studio 包含目录,库目录搞错了怎么办