数组Mex
2016-05-09 14:19
99 查看
题目描述:
请设计一个高效算法,查找数组中未出现的最小正整数。
给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数。保证数组大小小于等于500。
测试样例:
[-1,2,3,4],4
返回:1
AC代码:
请设计一个高效算法,查找数组中未出现的最小正整数。
给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数。保证数组大小小于等于500。
测试样例:
[-1,2,3,4],4
返回:1
AC代码:
class ArrayMex { public: /*void swap(int &t1, int &t2){ int tmp = t1; t1 = t2; t2 = tmp; } */ int findArrayMex(vector<int> A, int n) { // write code here int left=0,right=n,k; while(left<right){ if(A[left]==left+1) left++; else if(A[left]<=left || A[left]>right || A[A[left]-1]==A[left]) A[left]=A[--right]; else{ int tmp = A[left]; A[left] = A[A[left]-1]; A[tmp-1] = tmp;////此处很容易出错,因为A[left]已经改变,不能再使用A[A[left]-1]表达式。 } //swap(A[left],A[A[left]-1]);//建议使用swap函数。 } return left+1; } };
相关文章推荐
- MySQL 几个比较重要的用法总结
- SQL注入问题将传入的参数改为问号
- Android之Gzip/Zip压缩
- [转]Spark-->transformation:aggregate
- php中Jpgraph的运用
- Redis多实例启动脚本
- jQuery实现点击按钮文字变成input框点击保存变成文字
- Flask学习笔记-1
- 欢迎使用CSDN-markdown编辑器
- Spring如何实现IOC和AOP的,说出实现原理。
- 简单是选项卡切换效果~
- 通过layout实现可拖拽自动排序的UICollectionView
- 第7周 C语言程序设计(新2版) 练习1-8 统计空格、制表、换行数程序
- artDialog v6 中iframe使用
- 文章标题
- 在IE环境下对多行文本输入框textarea进行字数限制
- 通过UITableViewCell获取indexPath
- iOS UICollectionView 瀑布流
- 链表——有序链表化为平衡二叉查找树
- 一致性哈希算法与C++实现