搜索
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 数列L中有n个数字,其中有K个数字出现2次,1个数字出现1次,故n=2k+1,用O(1)空间,尽快找出只出现一次的那个数字
标题:
数列L中有n个数字,其中有K个数字出现2次,1个数字出现1次,故n=2k+1,用O( ...
只看楼主
wlhdhn
等 级:
新手上路
帖 子:58
专家分:0
注 册:2009-11-18
结帖率:
50%
楼主
问题点数:0 回复次数:3
数列L中有n个数字,其中有K个数字出现2次,1个数字出现1次,故n=2k+1,用O(1)空间,尽快找出只出现一次的那个数字
如题,请各位大牛指教!谢谢!
搜索更多相关主题的帖子:
空间
2011-09-17 14:00
wlhdhn
等 级:
新手上路
帖 子:58
专家分:0
注 册:2009-11-18
第
2
楼
得分:0
我写了一个程序,已调试通过:
int Findsignal(int a[],int N)
{
for(int i=0;i<N;++i)
if(a[i]!=0)
{
for(int j=i+1;j<N;++j)
if(a[j]==a[i])
{
a[j]=a[i]=0;
break;
}
if(j>=N)
return a[i];
}
}
2011-09-17 17:06
wlhdhn
等 级:
新手上路
帖 子:58
专家分:0
注 册:2009-11-18
第
3
楼
得分:0
上面的时间复杂度,最好的情况时间复杂度O(1),最差的情况时间复杂度是O(n^2),各位大牛给指点下,看还有没有更好的
2011-09-17 17:11
wlhdhn
等 级:
新手上路
帖 子:58
专家分:0
注 册:2009-11-18
第
4
楼
得分:0
找到解法啦!用异或运算
如:
int Findsigle(int a[],int n)
{
int ret=0;
for(int i=0;i<n;++i)
ret^=a[i];
return ret;
}
这个时间复杂度是O(n)
2011-09-18 14:02
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-350151-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.410734 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved