首页 > 试题广场 > 找出重复的数字
[编程题]找出重复的数字
一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。

输入描述:
空格分割的自然数集合


输出描述:
重复数字
示例1

输入

9 6 4 2 1 3 5 7 0 1 8

输出

1

说明

0,1,2,3,4,5,6,7,8,9 + 1
示例2

输入

3 0 2 2 1

输出

2

说明

0,1,2,3 + 2

bitset随便记录一下吧

#include <bits/stdc++.h>

using namespace std;

const int N = 50;

int n, m, k;

bitset<1000001>a;

int main() {
    while (~scanf("%d", &n)) {
        if (a[n] == 1) {
            printf("%d\n", n);
            return 0;
        }
        a[n] = 1;
    }
}
发表于 2019-07-11 15:57:33 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    vector<int>num;
    while(cin>>n)
        num.push_back(n);
    for(int i=0;i<num.size()-1;i++)
    {
        for(int j=i+1;j<num.size();j++)
        {
            if(num[i]==num[j])
            {
                cout<<num[i]<<endl;
                return 0;
            }
        }
    }
    return 0;
}

发表于 2019-08-18 23:11:03 回复(0)
试试就知道,万能输出重复字符及重复次数!!!
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Iterator;
public class Main{

public static void main(String[] args) throws IOException  {

Scanner s= new Scanner(System.in);
String a= s.nextLine();
String[] b=a.split(" ");
Map<String,Integer> map = new HashMap<String, Integer>();
for(int i =0 ;i<b.length;i++){
if(null!= map.get(b[i])){
map.put(b[i], map.get(b[i])+1); //无序
}
else{
map.put(b[i],1);
}
}

Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry) it.next();
String  key  =  entry.getKey().toString();
int value  =  Integer.parseInt(entry.getValue().toString());
if(value>=2){
System.out.println(key);
//System.out.println("重复的数字(字符)为"+key+"重复的次数"+value);
}

}
}
}

编辑于 2019-07-23 18:54:44 回复(0)
#include <bits/stdc++.h>
usingnamespacestd;
intmain(void){
    inta,n=0;
    charc;
    set<int> s;
    while((cin>>a).get(c)){
        n=s.size();
        s.insert(a);
        if(n==s.size()){
            cout<<a<<endl;
            return0;
        }
        if(c == '\n') break;
    }
    return0;
}

发表于 2019-07-23 10:23:02 回复(0)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{  vector<double> vec1;  double temp;  while (cin >> temp)  {   vec1.push_back(temp);  char c = cin.get();  if (c == '\n')  break;  if (c == ' ')  continue;  }  sort(vec1.begin(), vec1.end());  for (int i = 0; i < vec1.size()-1; i++)  {  if (vec1[i] == vec1[i + 1])  {  cout << vec1[i] << ' ';  for (int temp = vec1[i]; temp == vec1[i]; i++)  {    }  i--;  continue;  }  }  }

编辑于 2019-07-11 21:48:12 回复(1)
num = list(map(int, input().split()))
dic = {}
for i in num:
    if i not in dic:
        dic[i] = 1
    else:
        print(i)
        break

发表于 2019-07-26 08:17:20 回复(0)
涉及重复数字的可以用异或来做,这个比较特殊,也可以用先整体求和,再减去对N求和
nums = list(map(int,input().split()))
x = 0^1
for i in range(2,len(nums)-1):
    x = x^i
for i in nums:
    x = x^i
print(x)
    

发表于 2019-07-25 12:09:45 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Set<Integer> hset = new HashSet<>();
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(hset.contains(n)){
                System.out.println(n);
                break;
            }else{
                hset.add(n);
            }
        }
        sc.close();
    }
}

发表于 2019-07-20 09:32:07 回复(0)