时间:2015-07-10 来源:

【剑指Offer学习】【面试题51:数组中重复的数字】 【编程语言】

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的psd切图html,但不知道有几个数字重复了,psd切图html也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 举例说明   例如,团队网页接活3,0,5,那么对应的输出是重复的数字2或者3.

$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 版权声明:本文为博主原创文章psd切图html,未经博主允许不得转载.

题目分析   解决这个问题的一个简单的方法是先把输入的数组排序.从排序的数组中找出重复的数字时间很容易的事情,psd切图html只需要从头到尾扫描排序后的数组就可以了.排序一个长度为n的数组需要O(nlogn)的时间.   还可以利用哈希表来解决这个问题.从头到尾按顺序扫描数组的每个数web外包,每扫描一个数字的时候,web外包都可以用O(1)的时间来判断哈希表里是否已经包含了该数字.如果哈希表里还没有这个数字网页切图制作,就把它加入到哈希表里.如果哈希表里已经存在该数字了,div页面那么就找到一个重复的数字.这个算法的时间复杂度是O(n),但它提高时间效率是以一个大小为O(n)的哈希表为代价的.我们再看看有没有空间复杂度为O(1)的算法.   我们注意到数组中的数字都在0到n-1中.如果这个数组中没有重复的数字,div+css+js切图那么当数组排序之后数字i将出现在下标为i的位置.由于数组中有重复的数字承接网站前端,有些位置可能存在多个数字,承接网站前端同时有些位置可能没有数字. 现在让我们重排这个数组psd切图html,依然从头到尾一次扫描这个数组中的每个数字.当扫描到下标为i的数字时,承接网页制作首先比较这个数字(用m表示)是不是等于i.如果是web外包,接着扫描下一个数字.如果不是,web外包再拿它和第m个数字进行比较.   如果它和第m个数字相等网页切图制作,就找到了一个重复的数字(该数字在下标为i和m的位置都出现了).如果它和第m个数字不相等,手机页面切图排版就把第i个数字和第m个数字交换div+css+js切图,把m放到属于它的位置.接下来再重读这个比较、交换的过程,网页重构报价直到我们发现一个重复的数字.   以数组{2,1,2,3}为例来分析找到重复数字的步骤.数组的第0个数字(从0开始计数网页切图制作,与它的下标不相等div+css+js切图,仍然与它的下标不相等承接网站前端,继续把它和下标为1的数字3交换,页面div重构得到数组{3,2,2,3}.接下来继续交换第0个数字3和第3个数字0,1,3,5,接着扫描下一个数字.在接下来的几个数字中网页切图制作,2,2,它们的下标和数值都分别相等psd切图html,因此不需要做任何操作.接下来扫描到下标为4的数字2.由于它的数值与它的下标不相等,psd切图html再比较它和下标为2的数字.注意到此时数组中下标为2的数字也是2,也就是数字在下标为2和下标为4的两个位置都出现了,div切图排版因此找到一个重复的数字.

代码实现 public class Test51 { /** * 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的网页切图制作, * 但不知道有几个数字重复了,手机页面切图排版也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. * 例如div+css+js切图,3,0,5,那么对应的输出是重复的数字2或者. * * @param number * @return */ public static int duplicate(int[] number) { if (number == null || number.length < 1) { return -1; } // 判断输入的是否在[0, number.length-1]之间 for (int i : number) { if (i < 0 || i >= number.length) { return -1; } } for (int i = 0; i < number.length; i++) { // 当number[i]与i不相同的时候一直交换 while (number[i] != i) { // 如果i位置与number[i]位置的数字相同,div页面说明有重复数字 if (number[i] == number[number[i]]) { return number[i]; } // 如果不同就交换 else { swap(number, number[i]); } } } return -1; } private static void swap(int[] data, int y) { int tmp = data[x]; data[x] = data[y]; data[y] = tmp; } public static void main(String[] args) { int[] numbers1 = {2, 3, 4}; System.out.println(duplicate(numbers1)); int[] numbers2 = {2, 3, 4}; System.out.println(duplicate(numbers2)); int[] numbers3 = {2, 2, 4}; System.out.println(duplicate(numbers3)); int[] numbers4 = {2, 3, 4}; System.out.println(duplicate(numbers4)); int[] numbers5 = {2, 3, 4}; System.out.println(duplicate(numbers5)); } } 运行结果

点击次数:3435
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日牛腩新闻发布系统(三)--母版【云计算】2015年01月26日oracle学习入门系列之五内存结构、数据库结构、进程【编程语言】2015年05月15日马克鳗(美术设计稿标注工具)【移动开发】2015年07月28日ZooKeeper(一):数据文件 【综合】2015年03月09日poj1182食物链【种类并查集】【编程语言】2015年04月13日BZOJ1185【HNOI2007】最小矩形覆盖旋转卡壳 【综合】2015年09月15日SpringMVC中数据绑定之日期类型 【移动开发】2015年02月04日hdu4901Zombie’sTreasureChest【编程语言】2015年04月07日CMFCRibbonBar实现一个功能区条类似于Office的2007【编程语言】2014年12月29日TCPIP中的TIME_WAIT状态 【编程语言】2015年05月25日浅谈java中的访问修饰符2014年01月30日布隆过滤器(BloomFilter)详解 【互联网】2014年11月17日用javascript实现旋转图片效果的代码2014年01月29日南邮算法分析与设计实验2动态规划法 【综合】2015年06月05日ApachecommonsProxy简介和动态代理、动态拦截器实现 【云计算】2014年12月30日SharePoint数据保护之(二)还原网站集 【移动开发】2015年01月29日一张图读懂IO流(java)不要错过! 【编程语言】2015年05月06日从密码文件中取得指定uid的数据 【编程语言】2015年02月04日一些C++著名类库 【编程语言】2015年01月19日PhotoshopCS6界面设置教程2014年01月28日项目1-????实现复数类中的运算符重载22015年04月29日android实现对导航Tab设置下划线选中效果 【编程语言】2015年01月09日在二线城市的创业教训(1) 【编程语言】2015年06月24日输入年份,然后打印出该年的万年历,以及标识出当天日期,类似于linux下的cal-y结果,【综合】2015年07月17日栈的链表实现【综合】2015年08月14日androidPopupWindow和Activity弹出窗口实现方式2014年01月30日asp.netHttp异常eurl.axd出错信息解决方法2014年01月29日Knockout组件嵌套模板书写注意问题 【Web前端】2015年02月16日android--解决listview的footerDivider不显示的问题(解决方案) 【移动开发】2015年01月27日mysql设置输入的字符集【云计算】2015年05月06日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)