剑指offer——数组中重复的数字
传送门
Description
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
思路
题解:通过哈希的思想可以做出,但是还有另外一种更为巧妙的方法,遍历数组,记numbers[index] = val,那么我们令 numbers[val] -= length(数组中数字范围在 0 到 n - 1之间),当遍历下一次遇到val值时,查找numbers[val],如果numbers[val]小于0,证明这个数是重复的。
public class Solution {// Parameters:// numbers: an array of integers// length: the length of array numbers// duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;// Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++// 这里要特别注意~返回任意重复的一个,赋值duplication[0]// Return value: true if the input is valid, and there are some duplications in the array number// otherwise falsepublic boolean duplicate(int numbers[],int length,int [] duplication) {for (int i = 0;i < length;i++){int index = numbers[i];if (index < 0){index += length;}if (numbers[index] < 0){duplication[0] = index;return true;}numbers[index] -= length;}return false;}
}
转载于:https://www.cnblogs.com/ZhaoxiCheung/p/8542297.html
剑指offer——数组中重复的数字相关推荐
- 剑指offer:数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 【排序】剑指offer:数组中重复的数字
对数组进行排序,然后遍历判断,如果两个数相等,那么这两个数一定相邻 代码: class Solution { public:int duplicate(vector<int>& n ...
- 剑指offer03.数组中重复的数字
剑指offer03.数组中重复的数字 题目 第一种解法 第二种解法 第三种解法 值得一提的东西 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的 ...
- 剑指offer03-数组中重复的数字(java)|leetcode刷题
数组中重复的数字 题目 题目分析 题解 方法一 哈希表 方法二 暴力遍历数组 方法三 排序法 方法四 利用数组下标和元素的特点新建数组 方法五 数组原地交换 题目 找出数组中重复的数字. 在一个长度为 ...
- 剑指Offer-数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- [剑指offer] 数组中只出现一次的数字
本文首发于我的个人博客:尾尾部落 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 法一:大家都能想到的HashMap法 法二:异或法 ...
- python剑指offer数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- leetcode:剑指offer----数组中重复的数字
题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 来源 ...
- 剑指offer-----数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
最新文章
- dedephp geteditor(,cms教程:dedecms修改后台编辑器参数GetEditor的方法
- 基于 iframe 的全新微前端方案
- 使用命令行加载 jMeter 自定义配置文件里的自定义 property
- Fabric中的Transient Data与Private Data
- java接口fastjson_走进Java接口测试之fastjson指南
- Java使用表格显示日历编程_用java图形用户界面实现: 编写一个日历程序,能实现显示日历等简单功能。...
- 服务器 消息 208,在MSSQL2000里边 对象名 'sys.servers' 无效 服务器: 消息 208,级别 16,状态 1,行 1...
- Linux-rhel6.4 编译安装PHP,Nginx与php连接
- python识别视频中火焰_监控视频中火焰检测算法
- 乌云曝光铁道部12306网站出现SQL漏洞
- 58、JAVA Collections集合排序相关静态方法---方法1
- ISCC-2019部分wp
- idea项目一键部署增强版(经验篇)
- Qt QSqlQueryModel详解
- Linux-线程(LWP)
- 射影几何--圆锥曲线在平面上某点确定的对合线束
- 前言:关于作者吴秋生博士与此书简介
- 将eclipse配置成可迁移,即直接复制就可以使用
- auto.js B0021 图片查找 订阅功能 2021-10-07
- (实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】
热门文章
- Ansible详解(五)——Ansible其他模块使用详解
- Linux firewall防火墙详解(二)——firewall配置
- C++程序设计(三:可视化)
- utf8_unicode_ci和utf8_general_ci的区别,联系及使用
- leetcode_53 Maximum Subarray
- 爱创课堂每日一题第四十八天- html5有哪些新特性、移除了那些元素?
- ko.js循环绑定值问题(工作遇见)
- 团队作业——四则运算网页版
- ajax提交与上传文件同步
- 读《操作系统之哲学原理》的一点感想