算法题目:寻找迷失的数字。
来源:互联网 发布:其孰能讥之乎的其 编辑:程序博客网 时间:2024/06/06 13:08
<span style="font-size:18px;">/*题目:给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整数。比如 [1,2,0] 返回 3, [3,4,-1,1] 返回 2。最好能 O(1) 空间和 O(n) 时间。*/#include<stdio.h>#include<stdlib.h>//思路:/* 数组A[n]长度为n。 因为要求寻找的数必须大于0. 所以假定有一列数 [1...n] 那么A[n]中的数和[1...n]有如下几种关系 逐一查找,看[1...n]中的数在A[n]中是否都存在。 1.[1...n]里的元素,A[n]中都有,那么这两组数重合了,因此,既>0,又不属于A[n]的数,为n+1; 2.若不重合,[1...n]中哪个元素先没有的,答案就是此数。 但是二分查找需要有序表。得先排序 二分查找的话,查找n个元素需要O(nlogn)*///二分查找函数bool binserch(int x, int *a, int n){ int low=0;//保留域的左下标 int high=n-1;//保留域的右下标 int mid;//保留域的中间下标 while (low<=high) { mid=(high+low)/2; if(x>a[mid]) { low=mid+1; } else if(x<a[mid]) { high=mid-1; } else { return true; } } return false;}//堆排序函数void adjustHeap(int *A,int len,int i){ int l,r,large,temp; l=2*i+1; r=2*i+2; large=i; if(l<len) { if(A[l]>A[i]) { large=l; } } if(r<len) { if(A[r]>A[large]) { large=r; } } if(large!=i) { temp=A[large]; A[large]=A[i]; A[i]=temp; adjustHeap(A,len,large); }}void buildHeap(int *A,int len){ int i; for(i=len/2-1;i>=0;i--) adjustHeap(A,len,i);}void HeapSort(int *A,int len){ int i,temp; buildHeap(A,len); for(i=len;i>1;i--) { temp=A[0]; A[0]=A[i-1]; A[i-1]=temp; buildHeap(A,i-1); } printf("\n");}void lookFTLose(int *a,int array_len){ int i;//计数器 for(i=1;i<=array_len;i++) { if(!binserch(i,a,array_len)) { printf("%d\n",i); return; } } printf("%d\n",array_len+1);}//main函数int main(){ int i;//计数器 int n;//数组大小 int *a;//待处理数据 int res;//存储结果; while(scanf("%d",&n)!=EOF) { a=(int *)malloc(n*sizeof(int));//为动态数组a分配空间 //输入数据 for(i=0;i<n;i++) { scanf("%d",&a[i]); } HeapSort(a,n); lookFTLose(a,n); }}</span>
0 0
- 算法题目:寻找迷失的数字。
- 算法题目二:找到数组中迷失的数字
- Eclipse 寻找迷失的ID
- 【算法】寻找丢失的数字
- 寻找迷失21可的蓝
- 算法-寻找缺少的数字--9-2
- 算法题目---旋转数组的最小数字
- 寻找缺失的数字...
- 寻找缺失的数字
- 寻找缺少的数字
- 一道经典的面试题目(寻找1-1000中重复的数字)
- 题目:寻找缺失的数
- 算法题目-猜数字游戏
- PAT算法题目 数字分类
- 算法题目---数组中出现次数超过一半的数字
- 算法题目---数字在排序数组中出现的次数
- 算法题目---圆圈中最后剩下的数字
- 寻找第二大的数字
- 内部类/内部接口那点事
- 单例模式在游戏中的运用
- ubuntu下安装matlab
- 频繁模式挖掘(Frequent Pattern Mining)
- hdu 5014 Number Sequence 位运算+规律
- 算法题目:寻找迷失的数字。
- 观察者模式在游戏中的运用
- wpf 中Button 边框闪烁
- IOS7官方推荐图标和图像尺寸
- 【计算几何】 HDOJ 5017 Ellipsoid
- ios 利用通知处理键盘的显示与隐藏
- SoundPool-代替MediaPlayer-播放音效
- NSThread和dispatch_async用法和区别
- hdu 1730 Northcott Game (nim博弈变形)