欢迎使用CSDN-markdown编辑器
来源:互联网 发布:hadoop python api 编辑:程序博客网 时间:2024/06/05 04:53
今天去乐视笔试的一个题目。题目大意如下,给一个整数序列,找出其中没出现过的最小的正整数。
如输入:1,2,0。则未出现的最小正整数是3。
如输入:3,3,2,-1。则未出现的最小正整数是2。
要求时间复杂度O(N),空间复杂度是N(1)。
这个一开始确实是不知道怎么做,主要是这个复杂度限制。后来经过讨论,终于想到了一个办法。即采用本地数组的空间,将正整数k放在第k-1位。再重头过一遍,即可知道哪个数没出现过了。
具体代码如下。
//最小的不存在的正整数int minNonExist(int[]arr){ int next=-1; while(++next<arr.length){ int tmp=arr[next]; while(tmp>=1&&tmp<=arr.length&&arr[tmp-1]!=tmp){ int t2=arr[tmp-1]; arr[tmp-1]=tmp; tmp=t2; } } for(int k=0;k<arr.length;++k) if(arr[k]!=k+1) return k+1; return arr.length+1;}
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Clarke and minecraft
- 打击犯罪 解题报告
- HMM——前向后向算法
- 组成原理作业
- javaweb转发和重定向的区别
- 欢迎使用CSDN-markdown编辑器
- hdu 5455
- jquery正则校验时间格式
- Android 对整张图片打马赛克
- [DB2]db2重定向恢复
- 海量数据挖掘MMDS week1: Link Analysis - PageRank
- 单片机5V电源接头的三个引脚
- test5.8
- 用SQL Server实现建表和实现增删改