数字游戏 -- 寻找缺失的数字
算法专题导航页面
【算法专题 - 应用场景】
- 《数字游戏 – 寻找缺失的数字》
- 《数字游戏 – 微信红包》
- 《寻找两个排序数组(长度相等)的上中位数》
【题目】
程序猿小明来自于一个游牧家庭,家里有一个大大的牧场和成群结队的牛羊,为了便于管理羊群,小明决定对每只绵羊进行编号标记,最终刚好用完100个号码(1-100)。小明的日常生活简单的有点枯燥:写代码,放牧,放牧的同时写代码!
如此,日复一日,年复一年,时间过得很快很快!
有一天,临近傍晚收工时候,小明突然发现少了一只绵羊,但是无法确定是哪一只?
时间紧,任务重,你能否帮忙提供一种方法,能够尽快找出丢失的是哪一只绵羊?
【其他限制】
无。
【分析】
100只绵羊各不相同,都有自身的唯一编号。故此题可以转化为:现有99个不重复的正数,其范围是1-100,如何找出不存在的那一个正数?
【解决方案】
假定用arrayInt[99]来容纳上述99个不重复元素。
- 时间复杂度O(nlogn),空间复杂度O(1)
a. 采用某种时间复杂度为O(nlogn)的排序算法对99个正数排序(升序)得到有序数组arrayIntSorted[];
b. 对有序数组arrayIntSorted[]元素执行操作:arrayIntSorted[j] - arrayIntSorted[i] (j > i),一旦差值大于1,即表明缺失的数字介于元素arrayIntSorted[i]与arrayIntSorted[j]之间。也即缺失的数字为:arrayIntSorted[i] + 1 或者 arrayIntSorted[j] - 1。 - 时间复杂度O(1),空间复杂度O(n)
a. 采用哈希表的方式,申请长度为100的辅助空间,以编号1-100为键,初始状态哈希表所有元素值都为1。也即假设所有的100个数字都存在。
b. 遍历上述99个不重复元素,一旦相应的键存在,则删除该键。最终哈希表中剩下的那一个键即为缺失的数字。 - 时间复杂度O(1),空间复杂度O(1)
仔细考虑,此问题是一个局部与整体问题:局部 + 缺失数字 = 整体。至此,答案一目了然。有点脑筋急转弯的意思~??
数字游戏 -- 寻找缺失的数字相关推荐
- 数组系列—连续数中寻找缺失的数字
连续数中寻找缺失的数字 通过散列表实现: public static void find(int[] array){Hashtable<Integer,Integer> hasht=new ...
- python猜数字游戏简单-python猜数字游戏快速求解解决方案
python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...
- 猜java数字游戏大全_Java 猜数字游戏
最近学习了Java的基础知识,利用闲暇写了个猜数字游戏.由于对Java还不太熟悉,写的有些简单,尤其抛异常还不太会使用,请大家提意见.下面贴一下代码,也供以后自己修改. 1.Main类,主要是提供一个 ...
- 猜数字游戏 由计算机,猜数字游戏玩法
满意答案 changsheng668 推荐于 2017.10.06 采纳率:50% 等级:12 已帮助:12674人 这个游戏的名字大家可以随便起无所谓的,我们生活中也经常玩这个游戏,满有趣的 ...
- c#语言猜数字游戏,C#实现猜数字游戏
本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下 给定一个0-100的随机数字猜其大小 题目样式: 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这 ...
- php卡片猜数字游戏二进制,卡片猜数字游戏二进制码
<卡片猜数字游戏二进制码>由会员分享,可在线阅读,更多相关<卡片猜数字游戏二进制码(21页珍藏版)>请在人人文库网上搜索. 1.猜数字 大家看到的六张填满数字的表.你可以任选其 ...
- html5猜数字游戏代码,js猜数字小游戏的简单实现代码
复制代码 代码如下: 简易计算机 //获取随机数 function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.ran ...
- java两人猜数字游戏,java之猜数字游戏
一.要求:程序运行时 1.提示用户输入数字 2.如果猜中则输出猜对了 3.如果没猜中则提示数字大了或者小了,并提示继续猜,直到猜中 4.用户按输入0则退出游戏 5.用while循环写 6.猜的数字随机 ...
- 《Java特种兵》1.3 简单数字游戏玩一玩
1.3 简单数字游戏玩一玩 数字游戏没错就是玩数字游戏 Java怎么玩马上见证下 玩数字有什么用途呢我们不是虚拟数据给别人看而是通过玩数字转换让我们更了解计算机的数字运算也许数字运算可以有一些神奇的地 ...
最新文章
- 【转】研发游戏引擎那么难,为什么还应该砸钱去干?
- python获取控制台输出_Python | 用Python获取Windows控制台输出
- 初识Mysql(part7)--我需要知道的5个关于正则的小知识
- 如何在 SAP 电商云 Spartacus UI 里新建一个页面
- 将Jython嵌入到您的Java代码库中
- c语言中组合函数,排列组合c怎么算 公式是什么
- [剑指offer]面试题第[57-2]题[JAVA][和为s的连续正数序列][数学法][滑动窗口]
- Spring学习总结(5)——IOC注入方式总结
- GitChat · 前端 | Vue 组件库实践和设计
- 思博伦安全专家预测2017年民用和军用全球导航应用面临的更大风险
- linux区别sata和sas,SAS与SATA之间的异同分析
- easyui弹出加载遮罩层(转)
- LRU算法的一种实现方法
- 开发一个软件需要哪些角色
- 判断系统误差的matlab,基于MATLAB的误差数据处理实验报告
- 我们学校有一个计算机室英文,深圳朗文版小学二年级下册Unit 2 At school练习题...
- 如何使用一键回录游戏视频
- 个性化网站建设的一般流程
- DHCP协议的运行过程
- 什么才是真正的高级程序员