<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>

算法题目:寻找迷失的数字。相关推荐

  1. 算法题目-猜数字游戏

    算法题目: 设计一个猜数字游戏的java程序,数字为50到150之间的一个整数,由程序随机生成,程序使用者从键盘输入. 如果大了,提示"猜大了" 如果小了,提示"猜小了& ...

  2. 算法:数组中寻找两个数字的和等于固定值

    数组中寻找两个数字的和等于固定值 下面为实现思路及代码 codes. // 思路 // 先进后出 两端逼近 // for example x + y = z 前置条件:z的值固定 // 故x固定 则y ...

  3. 数字游戏 -- 寻找缺失的数字

    算法专题导航页面 [算法专题 - 应用场景] <数字游戏 – 寻找缺失的数字> <数字游戏 – 微信红包> <寻找两个排序数组(长度相等)的上中位数> [题目]   ...

  4. 算法④:把字符串变成数字

    算法④:把字符串变成数字 ​ 题目链接:https://leetcode-cn.com/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/ ...

  5. java 完美洗牌,(2)数组相关算法题目

    数组是最简单的数据结构,占据连续内存并且按顺序存储. 以下是与数组有关的算法题目. (1)查询数组中重复数字 算法思路:(1)利用hash表,没有便放进去,有就返回(Java中HashMap存数字都是 ...

  6. 字节跳动面试算法题目以及答案

    题目来源于牛客 https://www.nowcoder.com/discuss/455003?type=post&order=time&pos=&page=2&cha ...

  7. 数据结构与算法题目总结

    文章目录 1.输入输出控制 2.字符串控制 3.排序 4.数字处理类 5.模拟输出类 6.其他 1.输入输出控制 大量输入输出导致超时,可以试试把 cin 和 cout 换成 scanf 和 prin ...

  8. Python - 寻找最大矩形 数字版矩阵版

    一.引言 给定一个仅包含 0 和 1 .大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 例如给定如上 4 x 5 的 0-1 矩阵,由1组成的最大矩形面积 ...

  9. leetcode的回溯算法题目用这个模板解题,一网打尽,so easy!!!

    " 这是本人第 46 篇原创博文,每周至少两篇更新,谢谢赏脸阅读文章 这一篇文章来讲解一下如何做leetcode回溯算法题目,这一段时间我把leetcode上面的回溯算法的题目都刷了个遍,发 ...

最新文章

  1. python中ocr软件tesseract使用
  2. Sourceforge.net速度快的镜像 [zt]
  3. 计算机系统遵循,自考《计算机系统结构》第10章精讲
  4. mysql 8.0 一条insert语句的具体执行流程分析(三)
  5. element ui select设置不显示不存在的项_appium—等待时间设置方法
  6. 夺命雷公狗---Redis---3-Redis常用命令
  7. 【IPM2020】一种处理多标签文本分类的新颖推理机制
  8. springboot项目license_license · 开源的SpringBoot前后端分离项目/framework - Gitee.com
  9. 微信红包惊人秘密:谁最容易抢到大红包?
  10. Oracle 11g服务器安装详细步骤——图文教程
  11. 线性代数中(线代中)的克莱姆法则,又译克拉默法则(Cramer‘s Rule)
  12. 北京周末游周边 —— 延庆世园会
  13. 计算机毕业论文外文译文,计算机毕业论文外文文献译文
  14. ImportError: cannot import name ‘PILLOW_VERSION‘ from ‘PIL‘ (/home/user8/anaconda3/envs/FCOS/lib/pyt
  15. 7-22 龟兔赛跑 (20 分)
  16. turtle库——绘制八边形、八角图形以及叠边形图形
  17. xiaomi 小米6刷ubuntu touch
  18. 那些有趣的网站系列(十二)
  19. 在python中get是什么意思_python get函数有什么作用?示例解析
  20. Cisco ❀ VRF(虚拟路由转发表)

热门文章

  1. python 提取出所有学生的序号,姓名,成绩(简单易懂,代码可以直接运行)
  2. 【读书笔记】科技写作与交流 - 1.科技写作原则:文体及其构成
  3. 全球语言标准码及其国家或地区对照
  4. 小程聊微服务-数据抽取那点事(一)
  5. 如何查看多个Office 365 Group的Owner
  6. 300万微信公众号迎来广告时代
  7. 论文笔记 计算机模型的贝叶斯校准 Bayesian calibration of computer models
  8. django 热启动_uwsgi 热部署 热启动 热更新
  9. 矩阵的翻转与旋转()(另附代码)
  10. Nos项目 ChannelInfo添加SKIP和FAV的图标