数组a共n+1个元素,元素取值范围1~n,返回数组中重复的元素之一

题目条件限定了数组中一定有重复元素,可以对每个可能的取值1~n计算出现次数。或者划分取值范围为1~m,m+1~n,计算两个取值区间在数组a中出现的总次数,如果范围为1~m的统计次数大于m,说明有重复。但如果有某个符合取值范围的元素数组中出现了0次,那么可能为某个重复次数为两次的元素提供了隐蔽条件,这个重复的元素也无法找出,但说明另一个取值范围内也有元素是重复的

int cntRange(int* a, int len, int st, int end) {int cnt = 0;for (int i = 0; i < len; i++) {if (a[i] <= end && a[i] >= st)cnt++;}return cnt;
}
int func(int* a, int len) {int st = 1, end = len - 1, mid, cnt;while (st <= end) {mid = (st + end) / 2;cnt = cntRange(a, len, st, mid);if (st == end) {if (cnt > 1)return st;else return -1;}if (cnt > mid - st + 1)end = mid;else st = mid + 1;}
}void test02() {//int a1[] = { 49,38,65,97,76,13,27,49 };int a[] = { 2,3,5,4,4,2,6,7 };//for (const int i : a)cout << i << ' '; cout << endl;cout << func(a, sizeof(a) / sizeof(*a)) << endl;
}

查找数组中重复的元素相关推荐

  1. php 查找数组相同元素,查找数组中重复的元素

    本文收集整理关于查找数组中重复的元素的相关议题,使用内容导航快速到达. 内容导航: Q1:在c语言中输入数组两个数组,查找重复元素并输出怎么写啊 可以一次读入N个数据.可以考虑以回车结束读入的一组. ...

  2. js判断数组中重复元素并找出_javascript查找数组中重复元素的方法

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...

  3. C语言 删除数组中重复的元素

    删除数组中重复的元素 举个栗子,输入整数n,然后输入n个整数.直接上代码 #include<stdio.h> int main(void) {int i,n,a[100];int j, t ...

  4. php 去掉数组相同元素,php怎么去掉数组中重复的元素

    php去掉数组中重复的元素的方法:可以通过内置函数array_unique()来实现.array_unique()函数可以移除数组中重复的值并返回过滤后的数组.如果数组中存在多个相同元素,则只保留第一 ...

  5. php 数组重复最多,PHP获取数组中重复最多元素的简单示例

    这篇文章主要为大家详细介绍了PHP获取数组中重复最多元素的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 本文实例讲述了PHP获取数组中重复最 ...

  6. 数组中重复的元素(剑指Offe.03)

    数组中重复的元素(剑指Offe.03) 题目描述: 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了 ...

  7. java 去除数组中重复的元素

    要求:清除数组中重复的元素 思路:因为开始时我以为是不能用集合(使用集合的方式在文章底部),所以绞尽脑汁在不用集合的情况下去除数组中重复的元素,需要些一个去除重复内容的方法,我首先想到的的需要一个存储 ...

  8. 查找数组中重复的数字

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

  9. 查找数组中的指定元素的位置--顺序查找与二分查找

    Java代码-查找数组中的指定元素的位置 /*** 查找数组中指定元素(顺序查找)*/ class Demo6 {public static void main(String[] args) {int ...

最新文章

  1. 4g内存 堆内存分配多少_我需要多少内存
  2. Android 渗透测试学习手册 第二章 准备实验环境
  3. Android开发笔记(一百三十三)导航视图NavigationView
  4. android 内存泄漏问题【转】
  5. 互联网晚报 | 06月08日 星期三 | ​教育部回应高考试题疑泄露;​上海落户新规;字节跳动考虑出售得物少数股份...
  6. linux蜂鸣器驱动
  7. 交换机和路由器的区别_交换机和路由器有什么区别 交换机和路由器区别介绍【详解】...
  8. BREDR之inquiry及page
  9. css解决transform 方法字体抖动
  10. NYOJ 613免费馅饼
  11. 使用Ionic.Zip压缩、分卷压缩、解压文件
  12. 理解O(log2N)和O(Nlog2N)
  13. .gitignore文件作用
  14. Java Scanner类的方法及用法(很详细)
  15. 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。
  16. Android商城排版,android排版布局学习
  17. 在游戏策划中应用SCAMPER创新
  18. golang的杀手级应用:docker
  19. 分布式电源在潮流计算中的一些思考与总结
  20. centos 7 通过yum安装mysql教程

热门文章

  1. Python进阶之Scrapy-redis分布式爬虫抓取当当图书
  2. SUSE 11 安装sybase ASE 16.0 SP 02安装全过程
  3. 【GitLab】GitLab数据自动删除、自动备份
  4. 细思极恐!使用 AI 控制你的浏览器
  5. Uniapp之API promise化
  6. 下载jdk(所有版本)
  7. Python学习笔记之eval函数简析
  8. 海康、大华、华为等GB28181国标平台向上级联给LiveGBS GB28181平台的操作示例
  9. 「无刷新跳转」window.history两个新方法pushState和replaceState详解
  10. 神经网络中的sigmoid函数