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

在一堆数字中找出和其他数字不同的数字,如123,123,14,123,123,123这堆数字中找出14来,写下算法思路和时间复杂度,要求写核心代码和不能使用辅助空间。#include
#include
#include
usingnamespacestd;
intmain(){
vectordata;
	cout<<"Entersamenumbers"
			<<"andadifferentone(negativetobeend):"<	intvalue;
while(cin>>value&&value>0){
data.push_back(value);
}
intunique_value;
intsize=data.size();
if(data[0]!=data[1]){
if(data[0]!=data[2]){
unique_value=data[0];
}
else{
unique_value=data[1];
}
cout<<"foundtheuniquenumber:"<exit(0);
}
intlow=2;
inthigh=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<<"foundtheuniquenumber:"<return0;
}这段代码有什么问题吗?
BUG已经找出来了,可以看我的答案。分割线但是或许表达的原因,题意不甚清楚,所以这里补充说明:1.不一致的数字只出现一次,即所有数字的情况为:N个value_1和一个value_2,value_1不等于value_2;2.为了方便输入数据演示,我们假设数字不能为负数;大家都说得很好:unique()是标准库中一个算法,具体的效率我不是很懂,而且对于这道题目来说,有一个不好的地方是,破坏了数组的结构,不能回答类似“唯一元素的序号”的问题;这个小问题已经没有多少可以继续探讨的内容了,但我觉得应该加上一个要求——不能破坏数据结构。
白猪掌柜的
浏览 402回答 2
2回答

摇曳的蔷薇

太小题大作了。读取前3个数字:1.如果3个数字不都一样,给出不一样的那个,结束。2.如果都一样=X,整个数组扫过去,找到一个不等于X的数字,结束。intfoo(intx[],intn){inta=x[0],b=x[1],c=x[2];if(a==b&&b==c)for(inti=3;i
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript