• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 如何在一堆数字中找出与其他数字不同的一个?

如何在一堆数字中找出与其他数字不同的一个?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了找出不同的数字,excel找出重复数字,如何找出相同的数字,excel找出相同数字,找出数组中重复的数字等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何在一堆数字中找出与其他数字不同的一个?
描述:

在一堆数字中找出和其他数字不同的数字,如123,123,14,123,123,123这堆数字中找出14来,写下算法思路和时间复杂度,要求写核心代码和不能使用辅助空间。

#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main() { 

    vector<int> data;
	cout << "Enter same numbers "
			<< " and a different one( negative to be end) :" << endl;
	int value;
    while( cin >> value && value > 0 ) {
        data.push_back(value);
    }
    int unique_value;
    int size = data.size();
    if(data[0] != data[1] ) {
        if( data[0] != data[2]) {
            unique_value = data[0];
        }
        else  {
            unique_value = data[1];
        }
       cout << "found the unique number: " << unique_value << endl;
       exit(0);
    }
    int low = 2;
    int high = size-1;
    while( high > low )  {
         if( data[high] != data[low] ) {
            //其中必有一个是不同的,只要和data[0]就能得到结果
            if( data[high] != data[0] ) {
                unique_value = data[high];
            } 
            else {
                unique_value = data[low];
            }
            break;
         }
    }
    if( high == low ) 
   //low和high相等,data[high]没有和任何其他元素比较过
    unique_value = data[high];
    cout << "found the unique number: " << unique_value << endl;
    return 0;
}

这段代码有什么问题吗?
BUG已经找出来了,可以看我的答案。

分割线

但是或许表达的原因,题意不甚清楚,所以这里补充说明:

1.不一致的数字只出现一次,即所有数字的情况为:N个value_1和一个value_2,value_1不等于value_2;
2.为了方便输入数据演示,我们假设数字不能为负数;
大家都说得很好: unique()是标准库中一个算法,具体的效率我不是很懂,而且对于这道题目来说,有一个不好的地方是,破坏了数组的结构,不能回答类似“唯一元素的序号”的问题; 这个小问题已经没有多少可以继续探讨的内容了,但我觉得应该加上一个要求——不能破坏数据结构。

解决方案1:

一直xor就行了。。。

解决方案2:

全部异或起来就搞定了啊。

int x=0;
for (int i=0;i<n;++i) x=x^a[i];

解决方案3:

123,123,123,14,123,123

可以后面的数字和前面的数字相减得出不同么?

解决方案4:

int get_uniq(int * a)
{
    int i = 1;
    if (a[0]!=a[1])
        return a[0]^a[1]^a[2];
    else
        while (a[0]==a[++i]);
    return a[i];
}

解决方案5:

如果能够根据前几个数字判断出来不变的数字是123,那可以对整个序列求和对123取模,余数应该就是那个不一致的数,但也仅限于那个不一致的数字只出现一次。

解决方案6:

太小题大作了。读取前3个数字:
1. 如果3个数字不都一样,给出不一样的那个,结束。
2. 如果都一样=X,整个数组扫过去,找到一个不等于X的数字,结束。

int foo(int x[], int n)
{
    int a = x[0], b = x[1], c = x[2];
    if (a == b && b == c)
        for (int i = 3; i < n; i++)
            if (x[i] != a)
                return x[i];
    if (a == b) return c;
    if (a == c) return b;
    return a;
}

解决方案7:

问题在于在while循环过程中我忘记了给high--和low++,然后出现了死循环。
这个问题明显告诉我们它不需要排序,只需要找出其中的坏小子就可以啦。
比较简单的做法是data.unique(),然后比较前面三个元素。
当然,我写一篇文章记录下来了。http://honwhy.ixiezi.com/?p=265 有兴趣的可以看一下。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何在一堆数字中找出与其他数字不同的一个?

相关文章

  • 2017-06-07 用七牛获取文件信息报错Couldnotresolvehost:rsfqboxme
  • 2017-06-07 uwsgi+pythonflask诡异的NoModulenamed'flask'
  • 2017-06-07 Python爬虫,做了一个爬取百度贴吧中的数据,每次只能获取每一页的前几个数据,后面的都获取不了?
  • 2017-06-07 python处理txt的问题
  • 2017-06-07 多级目录下的内容上传解决方案
  • 2017-06-07 数据结构中的栈和微机原理的栈
  • 2017-06-07 python里fromimportas和afunc=modulefunc会导致什么不同吗?
  • 2017-06-07 Python类型转换问题
  • 2017-06-07 QiniuSDK连续上传问题
  • 2017-06-07 图片上传100%之后无动静是几个意思?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 有没有key和value互相之间一一映射的哈希表?
    • 生成上传凭证问题
    • (python)pymongo中如果读取DBRef关联外键文档字段?
    • 我想把html、css、js等也放在7牛上面,想做成静态服务器
    • JBOSS启动问题
    • Laravel数据表一对一关联都用hasOne还是一个hasOne和一个belongsTo?
    • 在七牛云存储中,如果上传本地使用js裁切的图片?
    • pythonsae微信公众号开发
    • 如何生成一个永不过期的token?
    • 七牛的CDN分发需要多久?==

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有