c#在数组中查找元素

求助,希望高手都看看有一个int的数组,长度为1000,其中的数据存储为1到999之间所有整数,而且只有一个是重复的,要求找出重复的数字,注意性能。找到这个元素所在位置的... 求助,希望高手都看看
有一个int的数组,长度为1000,其中的数据存储为1到999之间所有整数, 而且只有一个是重复的,要求找出重复的数字,注意性能。
找到这个元素 所在位置的索引
展开
 我来答
百度网友1298a6c
2009-11-24 · 超过83用户采纳过TA的回答
知道小有建树答主
回答量:228
采纳率:84%
帮助的人:69.6万
展开全部
数组为a
for(i=0;i<1000;i++)
{for(j=i+1;j<1000;j++)

{if(a[i]==a[j])
break;
else
continue;}
}
messagebox.show("重复值为a[i]");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sololive
2009-11-24 · TA获得超过394个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:110万
展开全部
把此数组加总,然后减去 1+2+...+999 的和.就是该数字.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iampaipaipai
2009-11-24 · 超过11用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:0
展开全部
用空间换时间吧

生成一个int count[999]数组,count[i-1]保存的是数据i的出现次数
扫描目标数组的时候,如果count[i-1] == 0 的话,count[i-1]加1,否则直接返回i,只扫描一次,时间复杂度是1000

int GetRepeat(int[] arr)
{
int[] count= new int[999]; //数组每一个数初始化为0
foreach(int i in arr)
{
if(count[i-1] == 0) count[i-1]++;
else if(count[i-1] == 1) return i;
}

return -1; //找不到返回-1
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQ2k5
2009-11-25 · TA获得超过438个赞
知道小有建树答主
回答量:911
采纳率:25%
帮助的人:257万
展开全部
3楼的思路很有意思,但是此题考察的不是假发运算,
一楼正解(可以把else continue去掉,没必要);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式