首页 > 试题广场 >

找出重复的数字

[编程题]找出重复的数字
  • 热度指数:3728 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一组无序的自然数集合,由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
/*
思路:直接进行排序,找到那个重复的数字即可
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        int n = str.length;
        int[] arr = new int[n];
        for(int i = 0;i<n;i++)
            arr[i] = Integer.parseInt(str[i]);
        Arrays.sort(arr);
        int same=arr[0];
        for(int i = 0;i<n-1;i++){
            if(arr[i]==arr[i+1]){
                same = arr[i];
                break;
            }
        }
        System.out.println(same);
        
    }
}

发表于 2020-05-21 15:37:04 回复(0)
import java.io.*;
import java.util.Map;
import java.util.HashMap;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] str = bf.readLine().split(" ");
        Map<String,Integer> map = new HashMap<>();
        for(int i = 0;i < str.length;i++){
            if(map.get(str[i]) != null){
                System.out.println(str[i]);
            }else{
                map.put(str[i],1);
            }
        }        
    }
}
发表于 2020-03-05 15:18:53 回复(0)
Java解法

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    /**
     * 
     * 运行时间:75ms
     *
     * 占用内存:10684k
     * */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] s1 = s.split(" ");
        Arrays.sort(s1);
        for (int i = 1; i < s1.length; i++) {
            if (s1[i].equals(s1[i - 1])){
                System.out.println(s1[i]);
                break;
            }
        }
    }
}


发表于 2020-03-01 22:17:27 回复(0)
  • map字符出现次数统计法
    import java.util.*;
    public class Main
    {
      public static void main(String [] args)
      {
          Scanner sc=new Scanner(System.in);
          while(sc.hasNextLine())
          {
              String str=sc.nextLine();
              String [] array=str.split(" ");
              HashMap<String,Integer> map=new HashMap<>();
              for(int i=0;i<array.length;i++)
              {
                  if(map.containsKey(array[i]))//如果数字已经出现过了
                  {
                      int value=map.get(array[i]);//通过键获取值
                      value+=1;
                      map.put(array[i],value);
                  }
                  else//如果数字没有出现过
                  {
                      map.put(array[i],1);
                  }               
              }
              //遍历map集合
              Set<String> set=map.keySet();
              for(String key:set)
              {
                  int value=map.get(key);
                  if(value!=1)//如果出现的次数不是1的话就打印出来
                  {
                      System.out.println(key);
                  }
              }
          }
      }
    }
发表于 2020-02-16 13:01:43 回复(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)