c#在数组中查找元素
求助,希望高手都看看有一个int的数组,长度为1000,其中的数据存储为1到999之间所有整数,而且只有一个是重复的,要求找出重复的数字,注意性能。找到这个元素所在位置的...
求助,希望高手都看看
有一个int的数组,长度为1000,其中的数据存储为1到999之间所有整数, 而且只有一个是重复的,要求找出重复的数字,注意性能。
找到这个元素 所在位置的索引 展开
有一个int的数组,长度为1000,其中的数据存储为1到999之间所有整数, 而且只有一个是重复的,要求找出重复的数字,注意性能。
找到这个元素 所在位置的索引 展开
4个回答
展开全部
数组为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]");
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]");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把此数组加总,然后减去 1+2+...+999 的和.就是该数字.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用空间换时间吧
生成一个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
}
生成一个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
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3楼的思路很有意思,但是此题考察的不是假发运算,
一楼正解(可以把else continue去掉,没必要);
一楼正解(可以把else continue去掉,没必要);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询