lintcode--删除排序链表中的重复数字
来源:互联网 发布:数据库设计实例 编辑:程序博客网 时间:2024/06/07 02:25
题目描述:
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例:
给出 1->2->3->3->4->4->5->null,返回 1->2->5->null
给出 1->1->1->2->3->null,返回 2->3->null
思路讲解:
这个题目很容易就理解题目意思,但是实际做起来,不知道从何入手,首先我们的意思就是直接将链表中的重复的元素删除,这样就需要我们记住该节点前面的一个链表节点,但是这就会很繁琐。
故我的方法是将所有的节点信息都放入vector向量中,然后对其进行分类分成两类即需要删除的以及不需要删除的,然后我们再将不需要删除的提取出来,然后将其进行链表连接即可,最后返回这个vector向量的首元素即可。
具体代码如下:
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /* * @param head: head is the head of the linked list * @return: head of the linked list */ ListNode * deleteDuplicates(ListNode * head) { // write your code here if(head==NULL) { return NULL; } ListNode *p; p=head; vector<ListNode *> res;//存储节点的向量数组 while(p!=NULL) { res.push_back(p); p=p->next; } int *flag=new int[res.size()];//由于我们需要判断那个节点需要删除,所以我们引入一个辅助数组,其标识具体位置是否需要删除 for(int i=0;i<res.size();i++) { flag[i]=0; } int f=0;//标识这个数字前面是否出现了 for(int i=1;i<res.size();i++) { if(res[i]->val==res[i-1]->val) { flag[i-1]=1; f=1; } if(res[i]->val!=res[i-1]->val&&f==0) { flag[i-1]=0; } if(res[i]->val!=res[i-1]->val&&f==1) { flag[i-1]=1; f=0; } } if(f==1) { flag[res.size()-1]=1; } else { flag[res.size()-1]=0; } vector<ListNode *> array;//将不需要删除的节点保存到该向量数组中 for(int i=0;i<res.size();i++) { if(flag[i]==0) { array.push_back(res[i]); } } if(array.size()==0) return NULL; for(int i=0;i<array.size()-1;i++)//对筛选出来的数组进行连接 { array[i]->next=array[i+1]; } array[array.size()-1]->next=NULL;//尾节点的特殊处理 return array[0]; }};
阅读全文
0 0
- LintCode-删除排序链表中的重复数字 II
- lintcode-删除排序链表中的重复数字II-113
- lintcode-删除排序链表中的重复数字 II
- LintCode(M)删除排序链表中的重复数字 II
- lintcode,删除排序链表中的重复数字 II
- LintCode 删除排序链表中的重复数字 II
- 删除排序链表中的重复数字 II -LintCode
- 删除排序链表中的重复数字 II -LintCode
- [LintCode]113.删除排序链表中的重复数字 II
- LintCode删除排序链表中的重复数字 II
- lintcode--删除排序链表中的重复数字
- lintcode删除排序链表重复数字
- LintCode-删除排序数组中的重复数字
- LintCode 删除排序数组中的重复数字
- lintcode ----删除排序数组中的重复数字
- LintCode:删除排序数组中的重复数字
- LintCode-删除排序数组中的重复数字
- 【LintCode】删除排序数组中的重复数字
- 快速排序算法
- 几个小例子告诉你, 一行Python代码能干哪些事
- 超级丑数-LintCode
- The VMware Authorization Service is not running
- CoordinatorLayout.Behavior
- lintcode--删除排序链表中的重复数字
- 一篇文章讲透CDN HTTPS安全加速基本概念、解决方案及优化实践
- 16秋计算机JAVA第三节课作业(钟永钜) 4~6题
- Java的Json解析包FastJson使用
- CSS中定义变量,并使用变量设置属性值
- Python模块_PyLibTiff读取tif文件
- Object Detection论文笔记(4)
- 顺序堆栈(数组)
- 从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件