| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 794 人关注过本帖
标题:数列L中有n个数字,其中有K个数字出现2次,1个数字出现1次,故n=2k+1,用O( ...
只看楼主 加入收藏
wlhdhn
Rank: 1
等 级:新手上路
帖 子: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
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分: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
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分:0 
上面的时间复杂度,最好的情况时间复杂度O(1),最差的情况时间复杂度是O(n^2),各位大牛给指点下,看还有没有更好的
2011-09-17 17:11
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分: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
快速回复:数列L中有n个数字,其中有K个数字出现2次,1个数字出现1次,故n=2k+1, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved