传送门

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——数组中重复的数字相关推荐

  1. 剑指offer:数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  2. 【排序】剑指offer:数组中重复的数字

    对数组进行排序,然后遍历判断,如果两个数相等,那么这两个数一定相邻 代码: class Solution { public:int duplicate(vector<int>& n ...

  3. 剑指offer03.数组中重复的数字

    剑指offer03.数组中重复的数字 题目 第一种解法 第二种解法 第三种解法 值得一提的东西 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的 ...

  4. 剑指offer03-数组中重复的数字(java)|leetcode刷题

    数组中重复的数字 题目 题目分析 题解 方法一 哈希表 方法二 暴力遍历数组 方法三 排序法 方法四 利用数组下标和元素的特点新建数组 方法五 数组原地交换 题目 找出数组中重复的数字. 在一个长度为 ...

  5. 剑指Offer-数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  6. 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  7. [剑指offer] 数组中只出现一次的数字

    本文首发于我的个人博客:尾尾部落 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 法一:大家都能想到的HashMap法 法二:异或法 ...

  8. python剑指offer数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  9. leetcode:剑指offer----数组中重复的数字

    题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 来源 ...

  10. 剑指offer-----数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

最新文章

  1. dedephp geteditor(,cms教程:dedecms修改后台编辑器参数GetEditor的方法
  2. 基于 iframe 的全新微前端方案
  3. 使用命令行加载 jMeter 自定义配置文件里的自定义 property
  4. Fabric中的Transient Data与Private Data
  5. java接口fastjson_走进Java接口测试之fastjson指南
  6. Java使用表格显示日历编程_用java图形用户界面实现: 编写一个日历程序,能实现显示日历等简单功能。...
  7. 服务器 消息 208,在MSSQL2000里边 对象名 'sys.servers' 无效 服务器: 消息 208,级别 16,状态 1,行 1...
  8. Linux-rhel6.4 编译安装PHP,Nginx与php连接
  9. python识别视频中火焰_监控视频中火焰检测算法
  10. 乌云曝光铁道部12306网站出现SQL漏洞
  11. 58、JAVA Collections集合排序相关静态方法---方法1
  12. ISCC-2019部分wp
  13. idea项目一键部署增强版(经验篇)
  14. Qt QSqlQueryModel详解
  15. Linux-线程(LWP)
  16. 射影几何--圆锥曲线在平面上某点确定的对合线束
  17. 前言:关于作者吴秋生博士与此书简介
  18. 将eclipse配置成可迁移,即直接复制就可以使用
  19. auto.js B0021 图片查找 订阅功能 2021-10-07
  20. (实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

热门文章

  1. Ansible详解(五)——Ansible其他模块使用详解
  2. Linux firewall防火墙详解(二)——firewall配置
  3. C++程序设计(三:可视化)
  4. utf8_unicode_ci和utf8_general_ci的区别,联系及使用
  5. leetcode_53 Maximum Subarray
  6. 爱创课堂每日一题第四十八天- html5有哪些新特性、移除了那些元素?
  7. ko.js循环绑定值问题(工作遇见)
  8. 团队作业——四则运算网页版
  9. ajax提交与上传文件同步
  10. 读《操作系统之哲学原理》的一点感想