两个线性时间解决的算法题
来源:互联网 发布:先知者软件怎么用 编辑:程序博客网 时间:2024/04/30 11:12
1. 一个数组,我们定义一个主元素,如果在这个数组中有某个元素在此数组中出现的次数超过一半,则称此元素为这个数组的主元素。试想出一种线性时间算法,确定一个数组是否存在主元素,如果存在主元素求出该主元素。
2.一个数组,现在它的元素处于如此的特殊情况,假如该数组中有一对元素互不相等,其他元素都是成对的相等。试想出一种线性时间算法,求出该数组中这对特殊的不相等的元素。
方法一:采用hash,不过这个没有技术含量。空间不知到有多大。
方法二:采用qsort中的partition的方法。
1.主元素无论怎么分布肯定与排序后第n/2个元素相同,调用partition找到第n/2个元素(logn),然后验证是否为主元素(n).
2.修改parttion,使分布为 <a =a >a,然后验证<a的所有元素异或,如果为0,则这两个不同的元素在>a中。反之亦然。如果<a所有元素异或,与>a的所有元素异或得到的元素均不为0,则得到的两个元素就是 互不相同的两个元素。
- 两个线性时间解决的算法题
- 线性时间算法解决最大间隙问题
- 线性时间的排序算法
- 线性时间的选择算法
- 选择问题的线性期望时间算法
- 主元素问题的线性时间算法
- 线性时间的中位数查找算法
- 线性时间的中位数查找算法
- 期待为线性时间的选择算法
- 期望为线性时间的选择算法
- 线性时间查找两个单链表的交叉结点
- 线性时间选择算法
- 线性时间选择算法
- 线性时间选择算法
- 线性时间排序算法
- 线性时间Huffman算法
- 算法-线性时间排序
- 线性时间选择算法
- linux命令tar的使用详解
- Linux 的多线程编程的高效开发经验
- 天书夜读-1,笔记
- Linux 常用命令
- 男人在不同年龄段对女人的要求
- 两个线性时间解决的算法题
- VS和linux中变参宏,打印
- 数值型
- 编程基础知识大全
- 事情处理方法之一:时间错开
- JS 数组
- C++在控制台输出当月日历
- JS 字符窜
- Class.forName( )