0~n-1的数存在一个数组A[0,n-1]中,问你如何判断这个数组中是否有两

zhangyilina1987 2011-08-18 09:47:22
貌似是某年谷歌的笔试题
...全文
603 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tedcy 2011-08-26
  • 打赏
  • 举报
回复
求和

int GetDouble(const int *a,size_t length)
{
int s1 = 0,s2 = length * (length + 1)/2;
for(size_t i = 0;i != length;++i)
s1 += a[i];
return s1 - s2;
}

介个比较好理解。
记得除了打点,求和,上面的固定偏移标志,还有一个办法。
不过思想是和固定偏移标志为了利用原数组再消除修改是一样的,记不起来了= =
SuperFC 2011-08-26
  • 打赏
  • 举报
回复
固定偏移标志法:
这个就是时间复杂度O(N), 空间复杂度O(1)的算法!
利用a[N]本身中值和下标的关系来做标记,处理完成后再清除标记即可

a[N],里面是1至N-1。原数组a[i]最大是N-1,若a[i]=K在某处出现后,将a[K]加一次N,做标记,当某处a[i]=K再次成立时,查看a[K]即可知道K已经出现过。a[i]在程序中最大也只是N-1+N=2N-1(溢出了怎么办啊???),此为一个限制条件


int do_dup(int arr[],int NUM)
{
int temp=0;

for(int i=0; i<NUM; i++)
{
if(arr[i]>=NUM)
temp=arr[i]-NUM; // 该值重复了,因为曾经加过一次了
else
temp=arr[i];

if(arr[temp]<NUM)
{
arr[temp]+=NUM; //做上标记
}
else
{
printf("有重复");
return temp;
}
}

printf("无重复");
return -1;
}


yuan19850805 2011-08-26
  • 打赏
  • 举报
回复
我靠,知道的就写两句 学习一下嘛。不要那么笼统 ^_^
超级大笨狼 2011-08-25
  • 打赏
  • 举报
回复
异或运算O(n)搞定。
kjs008 2011-08-21
  • 打赏
  • 举报
回复
应该是计数排序思想的应用把,不知道是否存在lgn的算法
lgl125 2011-08-21
  • 打赏
  • 举报
回复
可不可以用插入排序的思想进行排序,在排序的过程中判断是否有相同的数
LucEaspe 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 new_006 的回复:]
求和不行,没有重复的话就是一个置换。
[/Quote]3楼的你可以自己实现一下就知道了,因为数的范围也是限定在0~n-1
Jokul_Lee 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jokul_lee 的回复:]

看效率吧= =
[/Quote]
不过应该有一种很巧妙的方法,
Jokul_Lee 2011-08-20
  • 打赏
  • 举报
回复
看效率吧= =
cnmhx 2011-08-20
  • 打赏
  • 举报
回复
求和两次:
一次对数组元素;
一次对将数组元素和数组下标互换后的元素求和。
gjlzjb 2011-08-19
  • 打赏
  • 举报
回复
5楼正解;7楼给出了代码,7楼的说法“排序”不正确,代码也有点小问题。

可以改为:


bool flag[] = new bool[n];
for(i=0;i<n;++i) flag[i] = false;
for(i=0;i<n;++i)
if(flag[A[i]] == true) break;
else flag[A[i]] = true;
if(i==n) cout<<"有重复的"<<endl;
else cout<<"无重复的"<<endl;
可乐崽 2011-08-19
  • 打赏
  • 举报
回复
最直接的办法,排序,哈哈!
或者用标记位去检测吧:
char flag[n] = {0};
while(A[i]){
if(flag[A[i]) return true;
flag[A[i]] = 1;
}
商科程序员 2011-08-19
  • 打赏
  • 举报
回复
看要求的时间复杂度和空间复杂度。
636f6c696e 2011-08-19
  • 打赏
  • 举报
回复
打点。
alphaxiang 2011-08-18
  • 打赏
  • 举报
回复
可以依次把 a[ a[i] ] 置为一个标记,当遇到要要置位的位置已经为标记就表示有重复了
alphaxiang 2011-08-18
  • 打赏
  • 举报
回复
求和不行,没有重复的话就是一个置换。
LucEaspe 2011-08-18
  • 打赏
  • 举报
回复
LZ 是:
0~n-1的数存在一个数组A[0,n-1]中,问你如何判断这个数组中是否有两个相同的数存在。

求和啊。如果 a[0]+a[1]+a[2]+……+a[n-1] = 0+1+2+3+……+(n-1) 说明每个数都不一样
否则就存在两个相同的数
zhangyilina1987 2011-08-18
  • 打赏
  • 举报
回复
0~n-1的数存在一个数组A[0,n-1]中,问你如何判断这个数组中是否有两

个不同的数存在。
学习计划:1、每天学习1个小时,大概1个月完成。 2、认真听讲,要自己揣摩,明白原理。 3、动手实践、必须要多做课后练习题,遇到不会的,及时提。课程目标:从一个纯小白,到真正理解变量的实质,指针的实质,学会C++类及面向对象编程课程简介:敬告:该系列的课程在抓紧录制更新,敬请大家关注。该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。---------------------------------------------------  ---------------------------------------------------给学员(从小白到大牛)的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论:    必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向:  精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控:  理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...)  3.项目实战(1) Qt项目:  至少要亲手练习10个实战项目(网络服务器、多线程、据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)---------------------------------------------------  具体的内容包括: n 1.全书概览与分析 51.1 初步认识:做到心 51.2 图解:章节关系 61.3 探讨:教学方法论 71.4 探讨:学习方法论 71.5 C++的1.0与2.0 81.6 开发工具Qt5.9和VS2015/7/9 8控制台: 8UI界面: 81.7 安装并搭建Qt5.9.8开发环境 91.下载软件Qt Creator 5.9.8 92.双击开始安装 93.注册Qt账号 114.激活Qt账号 125.选择安装路径 176.选择“安装组件” 197.同意“许可协议” 218.点击“安装”后,请喝杯茶 241.8 捋起袖子开干:几个小案例 35第一:写代码打印“CS”图形 36第二:写代码打印各种图形(作业) 361.9 原书第一章剖析 371.计算机是什么? 372.程序是什么? 383.程序设计 384.C++入门程序示例 40n 第2章 C++基础知识 412.1 变量和赋值 412.2 输入和输出 422.3 据类型和表达式 432.4 简单控制流程 442.5 程序风格 452.6 x=x-3到底是个什么鬼? 46第3章 更多的控制流程 473.1 使用布尔表达式 473.2 多路分支 483.3 C++循环语句详解 483.4 设计循环 513.5 课堂练习 51第4章 过程抽象和返回值的函 524.1 自顶向下设计 524.2 预定义函 534.3 程序员自定义函 534.4 过程抽象 544.5 作用域和局部变量 554.6 重载函名称 55第5章 用函完成所有子任务 565.1 void函 575.2 传引用参 575.3 使用过程抽象 595.4 测试和调试函 595.5 常规调试技术 59第6章 I/O流——对象和类入门 606.1 流和基本文件I/O 606.2 流I/O工具 616.3 字符I/O 62第7章  637.1 入门 637.2 函 657.3 编程 667.4 多维 67第8章 字符串和向量 688.1 字符串的类型 688.2 标准string类 698.3 向量 71第9章 指针和动态 719.1 指针 719.2 手工动态 74第10章 定义类 7610.1 结构体 7710.2 类 7810.3 抽象据类型 8110.4 继承 8210.5 拷贝构造函 8310.6 析构函 8410.7 重载赋值(=)操作符 84第11章 友元函、重载操作符和 8611.1 友元函 8711.2 重载操作符 8811.3 和类 9111.4 类和动态 91第12章 独立编译和命名空间 9212.1 独立编译 9212.2 命名空间 93第13章 指针和链表 94第14章 递归 95第15章 继承 9615.1 继承基础 9615.2 继承细节 9715.3 多态性(虚函) 98第16章 异常处理 10016.1 异常处理基础 10016.2 用于异常处理的编程技术 101第17章 模板 10217.1 用于算法抽象的模板 10217.2 用于据抽象的模板 103第18章 标准模板库(STL) 10418.1 迭代器 10418.2 容器 10518.3 泛型算法 10618.4 不断进化的C++ 106第19章 Qt界面开发入门 106附录 107 
1、课程简介Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置心、消息总线、负载均衡、断路器、据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。       在本套课程,我们将全面的讲解Spring Cloud技术栈, 从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用Spring Cloud如何解决实际的题。Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构。- 注册心负责服务的注册与发现,很好将各服务连接起来- 断路器负责监控服务之间的调用情况,连续多次失败进行熔断保护。- API网关负责转发所有对外的请求和服务- 配置心提供了统一的配置信息管理服务,可以实时的通知各个服务获取最新的配置信息- 链路追踪技术可以将所有的请求据记录下来,方便我们进行后续分析- 各个组件又提供了功能完善的dashboard监控平台,可以方便的监控各组件的运行状况2、适应人群有一定的Java基础,并且要有一定的web开发基础。3、课程亮点       系统的学习Spring Cloud技术栈,由浅入深的讲解微服务技术。涵盖了基础知识,原理剖析,组件使用,源码分析,优劣分析,替换方案等,以案例的形式讲解微服务的种种题和解决方案l  微服务的基础知识n  软件架构的发展史n  微服务的核心知识(CAP,RPC等)l  注册心n  Eureka搭建配置服务注册n  Eureka服务端高可用集群n  Eureka的原理和源码导读n  Eureka替换方案Consuln  Consul下载安装&服务注册&高可用l  服务发现与服务调用n  Ribbon负载均衡基本使用&源码分析n  Feign的使用与源码分析n  Hystrix熔断(雪崩效应,Hystrix使用与原理分析)n  Hystrix替换方案Sentinell  微服务网关n  Zuul网关使用&原理分析&源码分析n  Zuul 1.x 版本的不足与替换方案n  SpringCloud Gateway深入剖析l  链路追踪n  链路追踪的基础知识n  Sleuth的介绍与使用n  Sleuth与Zipkin的整合开发l  配置心n  SpringClond Config与bus 开发配置心n  开源配置心Apollo4、主讲内容章节一:1.     微服务基础知识2.     SpringCloud概述3.     服务注册心Eureka4.     Eureka的替换方案Consul章节二:1.     Ribbon实现客户端负载均衡2.     基于Feign的微服务调用3.     微服务熔断技术Hystrix4.     Hystrix的替换方案Sentinel章节三:1.     微服务网关Zuul的基本使用2.     Zuul1.x 版本的不足和替换方案3.     深入SpringCloud Gateway4.     链路追踪Sleuth与Zipkin章节四:1.     SpringCloud Config的使用2.     SpringCloud Config结合SpringCloud Bus完成动态配置更新3.     开源配置心Apollo

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧