Arithmetic problem | 最大间距
来源:互联网 发布:哈利波特校服淘宝 编辑:程序博客网 时间:2024/05/11 21:12
题目如下:
给定一个未经排序的数组,请找出其排序表中连续两个要素的最大间距。
如果数组中的要素少于 2 个,请返回 0。使用线性的时间和空间复杂度的方法解决这个问题。
样例
给定数组 [1, 9, 2, 5]
,其排序表为 [1, 2, 5, 9]
,其最大的间距是在 5
和 9
之间,= 4
.
解题思路:
这题目明显是要排序操作的,但快排的时间复杂度不是线性的,因此也无需考虑。因为还需要使用线性的空间复杂度来解题,因此本人选择唯一标记方法来达到解题目的,那么只要标记本来已排序,也就无需考虑其他因素,直接遍历出结果即可,且标记本身已为线性空间,符合题意。标记上,本人还是一如既往的喜欢位标记,那么就如以前那般使用bitset吧,当然也可以使用数组,看情况而定吧。使用bitset可以忽略重复元素的标记,并且在遍历结果是还能剩下不少力气,何乐而不为。
思路代码实现如下:
#define max(a,b) a>b?a:b#define min(a,b) a<b?a:b#define max_num 10int Method(int *i,int len){if (len < 2) return 0;bitset<max_num> *bitset_=new bitset<max_num>;int min_ = i[0], max_ = min_, res_ = 0, temp_ = 0;for (int a = 0; a < len; ++a){bitset_->set(i[a], true);min_ = min(min_, i[a]);max_ = max(max_, i[a]);}for (int i = min_; i < max_ + 1; ++i){if (!bitset_->test(i))temp_++;elseres_ = max(temp_, res_), temp_ = 0;}delete bitset_;return res_ + 1;}
9 0
- Arithmetic problem | 最大间距
- 最大间距
- 最大间距
- 最大间距
- 最大间距
- A Problem in Arithmetic
- Problem J: Arithmetic Sequence
- Arithmetic problem | 二进制表示
- Arithmetic problem | The Triangle
- Arithmetic problem | 书籍复印
- Arithmetic problem | Target Sum
- Arithmetic problem | 找二维矩阵权值为1的最大矩形面积
- Arithmetic problem | 求n个直方图所含最大的矩形面积
- LintCode-最大间距
- 最大间距问题
- Java实现-最大间距
- LintCode-最大间距
- [LintCode]400.最大间距
- NOI题解(1.12编程基础之函数与过程抽象)(待补全)
- Android5.1修改以太网MAC地址(SElinux)
- 链表操作 对链表进行输入,插入,删除结点,按关键字进行查找操作 C语言
- Linux磁盘管理
- 第一篇博客要写给自己
- Arithmetic problem | 最大间距
- Android开机出现不能自启动Activity的问题
- Android Studio 项目中,哪些文件应该忽略而不提交到svn的服务器中?
- 用js获取当前日期的前一天
- 大型网站系统与Java中间件实践 第5章 数据访问层
- office 2010激活
- 使用SparkSQL内置函数接口开发StructType/Row转Json函数
- java 操作mysql的创建数据库及数据的增删改查
- Mongodb的update操作