腾讯(求丢失的元素)

简介: 一.从1~100中随机抽走一个数字,剩下的99个数字被打乱顺序放到数组 a[99]。 int a,k=0; srand(time(NULL)); a = rand()%100+1;//随机从0~100抽取一个数 int array[99] = {0};//数组保存数据 for(in...
一.从1~100中随机抽走一个数字,剩下的99个数字被打乱顺序放到数组 a[99]。

int a,k=0;
srand(time(NULL));
a = rand()%100+1;//随机从0~100抽取一个数
int array[99] = {0};//数组保存数据
for(int i = 1; i <= 100; ++i)
{
    if(i != a)
    array[k++]  = i;//获取剩下的99个数字
}

//打乱剩下99个数据
for(int i = 0; i <99; ++i)
{
  int j = rand()%99;//随机获取一个数组下标
  //将i下标处的数据与j下标数据交换
  int b =   array[i]; 
   array[i] =  array[j];
  array[j] = b;
}

二.有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n
求丢失的元素.



这原是一道JSP面试题 


1.二分查找 

2.遍历数组,求取数组的累加和s, 平方和qs。
用1...10000的累加和减去s, 得到移除两数之和a,
用1...10000的平方和减去qs,得到移除两数之和b,

那么解方程就可以了
x1 + x2 = a
x1^2 + x2^2 = b

需要用的高中数学中的角坐标变换,和差化积什么的。

至于去掉三个数大家可以试试立方和
x1 + x2 + x3 = a
x1^2 + x2^2 + x3 = b
x1^3 + x2^3 + x3^3 = c
方程大家可以任意构造,只要其和不用太大,并且易于求解就可以了

设减少的3个数分别为x、y、z,3个数的和为b,3个数的平方和为c,3个数的立方和为d。
据题意有下面3个等式联立:
x + y + z = b ①
x * x + y * y + z * z = c ②
x * x * x + y * y * y + z * z * z = d ③
只要求出了b、c、d,我们就可以把①式两边平方再减去②式得到——
x * y + y * z + x * z = f(a, b, c) ④
再通过(x + y + z)^3 = x^3 + y^3 + z^3 + ... + 6x * y * z的公式和①②③式代入处理③式得到——
x * y * z = f(a, b, c) ⑤
根据①④⑤就能转换成一元三次方程,通过盛金公式(B^2-4AC<0)求取3个根——也就是被减少的那3个数。


3.
bitmap,hash方法暂时不会 

4. 
memset(flag,0,sizeof(flag));
for(int i=1;i<=n-3;++i)
flag[a[i]]=1;
for(int i=1;i<=n;++i)
if(!flag[i])
cout<<i;

 

目录
相关文章
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
|
算法 前端开发 索引
前端算法-丢失的数字
前端算法-丢失的数字
|
机器学习/深度学习 编解码 并行计算
仅做两项修改,苹果就让StyleGANv2获得了3D生成能力
仅做两项修改,苹果就让StyleGANv2获得了3D生成能力
遍历寻找第一个满足条件的情况(7-10 电话聊天狂人
遍历寻找第一个满足条件的情况(7-10 电话聊天狂人
54 0
|
数据采集 监控 Kubernetes
您有一份来自iLogtail社区的礼物待查收
从2021年11月开源以来,高性能轻量级可观测性采集器iLogtail受到了大量开发者的关注和建议。累计收藏800+次,收到建议100+条,PR 180+次,文章阅读量破万。在开源之初我们就坚信开源才是iLogtail最优的发展策略,也是释放其最大价值的方法,时隔9个月开源社区的积极反响让我们亲身体会到了社区在推动开源软件发展的价值,也让我们决定推出更多激励计划来感谢一直支持iLogtail的贡献者们。
316 0
您有一份来自iLogtail社区的礼物待查收
|
SQL 算法 网络协议
这次,进腾讯了
Hey guys, 这里是程序员cxuan,欢迎你收看我最新一期的文章,今天这篇文章源自于我一个忠实读者的亲身经历,这篇文章写了他从大一开始到进入腾讯的一系列感悟和总结,希望能够帮到你。
这次,进腾讯了
|
存储 监控 安全
万字长文 | 微软“刷新”的背后,Satya未讲的另一半故事
2018年的最后一天,微软以7798亿美元市值,超过苹果的7491亿美元以及亚马逊的7344亿美元市值,而跃居全球最高市值公司,并以这个记录结束了整个2018年。就在2013年前任微软CEO Steve Ballmer宣布要退休的时候,业界认为微软已经在移动互联网和智能手机时代落后,对于微软的前景并不乐观。然而,就在2014年2月Satya Nadella上任新CEO后,微软出现了巨大变化,在云计算时代迎头赶上,并在短短4年里创造了新的辉煌。
299 0
万字长文 | 微软“刷新”的背后,Satya未讲的另一半故事
|
存储
IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?
1、前言 IM的群聊消息,究竟存1份(即扩散读方式)还是存多份(即扩散写方式)? 上一篇文章《IM群聊消息的已读回执功能该怎么实现?》是说,“很容易想到,是存一份”,被网友们骂了,大家争论的很激烈(见下图)。
2698 0
|
新零售 存储 安全
解码2017双11:全球狂欢新记录背后的阿里云存储
2017天猫双11再次刷新纪录,这背后是大数据的支撑和阿里云计算的能力的体现。手淘、天猫APP主站的所有图片和视频都存储在阿里云对象存储OSS之上,全球数以亿计的消费者,对这些商品的访问的流量和并发次数,比成交笔数高得高。
5492 0
|
Web App开发 安全
不小心删除了华为手机备忘录里的内容如何恢复?
​不小心删除了华为手机备忘录里的内容,如果手机开着云服务功能,云端备忘录里该条内容也会被删除,无法找回! 小编一直都是用的华为手机,不管是功能还是外观,华为手机都质量过关,所以用了一部又换一部。
5049 0