题目描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

解题思路

扫描数组{2,3,1,0,2,5,3}下标为0开始,如果当前位置的数不等于它的下标则与下表为当前元素的值进行交换

  1. 第一次,下标为0,值为2.不等于,与下标为2的数字1进行交换{1,3,2,0,2,5,3}
  2. 第二次,下标为0,值为1,不等于,与下标为1的数字3进行交换{3,1,2,0,2,5,3}
  3. 第三次,下标为0,值为3,不等于,与下标为3的数字0进行交换{0,1,2,3,2,5,3}
  4. 第四次,下标为0,值为0,等于,判断下一个{1,2,3,2,5,3}
  5. 第五次,下标为1,值为1,等于,判断下一个{2,3,2,5,3}
  6. 第六次,下摆为2,值为2,等于,判断下一个{3,2,5,3}
  7. 第七次,下标为3,值为3,等于,判断下一格{2,5,3}
  8. 第八次,下标为4,值为2,不等于,与下标为2数字进行交换,此时下标为2的数字为2,所以第一个重复的数字找到

代码实现

class Solution {public:// Parameters://        numbers:     an array of integers//        length:      the length of array numbers//        duplication: (Output) the duplicated number in the array number// Return value:       true if the input is valid, and there are some duplications in the array number//                     otherwise falsebool duplicate(int numbers[], int length, int* duplication) {if(numbers == nullptr || length <= 0)return false;for(int i=0;i<length;++i){if(numbers[i]<0 || numbers[i]>length-1)return false;}for(int i=0;i<length;++i){while(numbers[i] != i){if(numbers[i] == numbers[numbers[i]]){*duplication = numbers[i];return true;}swap(numbers[i],numbers[numbers[i]]);}}return false;}
};

【剑指offer】_15数组中重复的数字相关推荐

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

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

  2. Leetcode 剑指 Offer 03. 数组中重复的数字 (每日一题 20210614)

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

  3. 【三种解法实现】剑指 Offer 03. 数组中重复的数字

    立志用最少的代码做最高效的表达 题目链接-->传送门 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数 ...

  4. leetcode 剑指 Offer 03. 数组中重复的数字

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

  5. 【算法】剑指 Offer 03. 数组中重复的数字

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

  6. leetcode 剑指 Offer 03. 数组中重复的数字 抽屉原理 一个萝卜一个坑

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

  7. 《剑指offer》数组中重复的数字

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

  8. 剑指 Offer 03. 数组中重复的数字()

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

  9. 剑指Offer之数组中重复的数字

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

  10. 【LeetCode笔记】剑指 Offer 03. 数组中重复的数字(Java、哈希表、原地算法)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 倒是和leetcode 287 寻找重复数很像..但是不能使用那道题的快慢指针法(也可能是我太菜了) 重点在于题干的描述[长度为 n 的数组 ...

最新文章

  1. 【CVPR2022】双曲图像分割
  2. [WPF]学习笔记二---主窗体
  3. vue在微信里面的兼容问题_微信H5页面兼容性问题分析及解决方法
  4. html 删除记录,添加删除记录.html
  5. 【专题介绍】音视频+
  6. 2021 ACDU China Tour-上海站暨数据库大咖讲坛(第4期)成功举办!(附视频回放PPT下载)...
  7. 帆软报表插件开发系列之plugin.xml
  8. spring配置文件中id与name
  9. 2022 SpringBoot/SSM的极为轻量级推荐博客系统
  10. jave依赖无法导入it.sauronsoftware.jave jar下载
  11. 最新京东批量试用助手
  12. nekohtml的简单使用
  13. 线性分类器三种最优准则
  14. html 画xyz坐标,xyz坐标轴怎么画要图谢谢?
  15. 码农故事:一个辞职创业卖凉皮的程序员
  16. iphone与计算机连接,苹果usb怎么与电脑连接_苹果怎么设置与电脑连接的图文步骤...
  17. HardFault错误信息分析定位
  18. C语言将一个数插入到已排好序的数组中
  19. 富途客户端软件测试笔试and面试
  20. linux查找表空间使用情况,表空间的使用情况查询及管理

热门文章

  1. jsp分割字符串并遍历
  2. 用C++调用tensorflow在python下训练好的模型(centos7)
  3. AtCoder Beginner Contest 084(AB)
  4. HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)
  5. [转]sql,N/$/#/@的含义和作用
  6. 对JSON的一点认识和理解以及JQuery处理JSON
  7. [转]“UPA 中国”北京行业聚会笔录
  8. [JavaScript]让footer总是停留在页面的底部(footer all the way at the bottom of the page)
  9. python控制台执行代码字符串_编写Python脚本以使用控制台命令执行
  10. 11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法