永发信息网

2.数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N

答案:3  悬赏:20  手机版
解决时间 2021-11-24 19:50
2.数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N
最佳答案
算法思想:先对1..N-1之间的所有整数累加求和,再对数组中的所有元素累加求和;用后者减去前者得到的差就是重复的数字。

参考源代码(C++):

#include "iostream.h"

void main()
{
int arr[] = {6, 2, 3, 4, 3, 5, 1};
int N = 7;
int sum1, sum2;
int i;

for(i=1,sum1=0; i
for(i=0,sum2=0; i
cout<<"重复的数字是 "<}

时间复杂度:O(n)

算法特点:对于数组中数值的出现顺序不做任何要求,即无需有序(这是二楼算法的缺陷)。
全部回答
#include
#define N 10

int main()
{
int array[N]={1,2,3,4,5,2,6,7,8,9};
int i;
for(i=0;i {
if(array[i]!=i+1)
break;
}

printf("repeat num is:%2d\n",array[i]);

return 0;
}
如果不进行初始化的话,就还需要一个for循环来初始化,语句为:
for(i=0;i array[i]=i+1;这样就行了,
具体的算法就是:从1到N-1有n-1个数,所以,重复的数只有一个,而且数组的值有一定的规律,即array[i]=i+1, 那么我们就可以根据这个来找到重复的数据了,即只要前面这个等式不成立,那么这个数就找到了,输出即可。
a[N]中存放了的数的范围是1至N-1吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东风乘龙9.6离合怎么调高低在哪里调
东风本田新思域自动豪华版内饰座椅是不是布的
燕洋陶艺地址好找么,我有些事要过去,
能具体介绍一下这个壳斗科的植物吗
有谁开过圣达菲1.8T?油耗要多少?车怎么样?
有没有姓“菲”的人
求助CAD图纸上现浇柱预制柱怎么看
茶山农场地址好找么,我有些事要过去,
淇县开车到鹤壁新区高速交警怎么走?
老公的有限责任公司转让妻子有权参与吗
请说出一个又含山又含水的字,汕字除外
动物尸体都是怎么处理的
乐中乐动漫电玩城地址好找么,我有些事要过去
我在通州区怎么做一号线
润建通信开盘能涨多少
推荐资讯
中行网银代发工资,提示“笔信息有误”
黾读什么字
150050 增利B 是什么基金?如何购买?
有一件棉服或者羽绒服连体帽子上有两个大大的
下列反应的离子方程式正确的是(  )A.苯
豹纹竹芋放卧室好么
谁他妈说TEW2不吓人了
想问下有没有杭州西站到常州武进的车,或者从
移动手机尾号AAABB的大概多少钱?
可乐菲美术学校地址好找么,我有些事要过去,
0.75千克每升等于多少克每毫升
中国哪些明星曾经是网络童星(现在和以前的都
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?