算法22:给定一个排好序的linked list,删除其中所有的重复元素。比如给定1->2->3->3-> 4->4->5,返回1->2->5。给定1->1->1->2->3,返回2->3
来源:互联网 发布:淘宝网平跟女式鞋 编辑:程序博客网 时间:2024/05/16 17:32
算法分析
删除有序链表中所有的重复元素,采用两个指针p和q遍历链表删除的方法,另外设置一个指针指向p指针的前一个节点。需要考虑重复元素在头节点和尾节点的特殊情况。
c++代码
//移除有序链接中重复的元素void LinkList::RemoveAllRepeatData(){ //如果链表为空或者只有一个元素,直接返回 if(head == NULL || head->next == NULL) { return; } //使用两个指针进行比较 Node* p = head; Node* q = head->next; //p的前一个节点 Node* pPre = head; while(p != NULL && q != NULL) { if(p->data == q->data) { do { q = q->next; length--; } while(p->data == q->data && q->next != NULL); //如果p是头节点,q是尾节点 if(p == head && q->next == NULL) { head = NULL; return; } //如果p是头节点 if(p == head) { head = q; p = q; pPre = q; q = q->next; } else if (q->next == NULL)//q是尾节点 { pPre->next = NULL; break; } else { //删除p到q的前一个节点之间的节点 pPre->next = q; p = q; q = q->next; } } else { pPre = p; p = p->next; q = q->next; } }}
0 0
- 算法22:给定一个排好序的linked list,删除其中所有的重复元素。比如给定1->2->3->3-> 4->4->5,返回1->2->5。给定1->1->1->2->3,返回2->3
- 区间序列 (2,3) (4.2,6) (7,9),判断给定的一个区间与上面哪些区间有交集,比如给定(4,5)则输出(4.2,6)。
- 给定索引k,返回Pascal三角形的第k行。例如,给定k = 3,返回[1,3,3,1]。
- 获取一个数组中最长的连续的元素序列。例如,给定了[31,6,32,1,3,2],最长的连续的元素序列是[1,2,3],返回其长度3
- 给定入栈序列1、2、3、4、5,输出所有的出栈序列和总数
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- 编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。
- 写一个函数满足:给定一个int list a,满足a[i+1]>=a[i],给定int key,找出list a中第一个大于等于key的元素的index,无满足要求的元素则返回-1.
- 给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y 。 | 是二进制的或(or)运算,例如 3 | 5 = 7。比如当 x=5,k=1时返回 2,因为5+1=6 不等于 5
- 在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 在排序数组中,找出给定数字的出现次数.比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 在排序数组中,找出给定数字出现的次数。比如【1,2,2,2,3】中2的出现次数为3次
- 在排序数组中,找出给定数字的出现次数 比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 【js实现】在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次
- 给定一个二叉树,返回所有重复的子树。对于每种重复的子树,只需要返回其中任何一个的根节点。
- 给定一系列数字,请打印出这些数字的所有排列,例如1,2,2,3,4,请列出所有的排列
- 给定两个整数n和k,返回1 ... n中k个数的所有可能组合。
- 乐视面试题一个数组,找出数组中没有出现的最小的一个数字,比如[1,2,0],返回3,[1,2,4,5]返回3
- RequireJS源码解读(二)
- 最长公共子序列问题(LCS)
- Hadoop 1.2.1 伪分布升级到 2.6.0伪分布(八)
- 音视频相关流媒体协议对比
- Stack(4)判断数组是不是二叉搜索树的前序遍历(递归及非递归实现)
- 算法22:给定一个排好序的linked list,删除其中所有的重复元素。比如给定1->2->3->3-> 4->4->5,返回1->2->5。给定1->1->1->2->3,返回2->3
- 物理学上四大神兽之拉普拉斯妖是指什么
- Invalidated object not currently part of this pool/Could not return the resource to the pool
- win10 adb interface 无法安装 系统找不到指定文件
- 使用jquery.form.js 进行表单提交,通过回调函数实现页面互动
- EhCache 分布式缓存/缓存集群
- 《剑指Offer》 二维数组中的查找
- 关于如何解决当type=number时,加减箭头的处理;
- JavaScript知识点总结---------003(变量类型)