一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。
一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。
空格分割的自然数集合
重复数字
9 6 4 2 1 3 5 7 0 1 8
1
0,1,2,3,4,5,6,7,8,9 + 1
3 0 2 2 1
2
0,1,2,3 + 2
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; } } } }
const readline = require('readline') const rl = readline.createInterface({ input: process.stdin, ouput: process.stdout }) let inArr = [] rl.on('line',line=>{ if(!line) return inArr.push(line.trim()) if(inArr.length === 1){ let arr = inArr[0].split(' ').map(e => +e) console.log(findRepeat(arr)) //解法一 排序比较 // let res = {} // for (let i = 0; i < arr.length; i++) { // if(!res[arr[i]]){ // res[arr[i]] = 1 // }else{ // console.log(arr[i]) // break // } // } } }) //解法二 Set() function findRepeat(arr) { const set = new Set() for (let i = 0; i < arr.length; i++) { if(set.has(arr[i])) return arr[i] set.add(arr[i]) } return 0 }
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); HashMap<Integer,Integer> map = new HashMap<>() ; while (sc.hasNext()){ int n = sc.nextInt(); if (!map.containsKey(n)) map.put(n,1); else { System.out.println(n); break; } } sc.close(); } }
#include <stdio.h> #include <stdlib.h> #include <string.h> int comp(const void* a, const void* b) { return *((int*) a) - *((int*) b); } int main(const int argc, const char** argv) { char input[5000]; gets(input); int i, nums[1000], numsSize = 0; char* tok = strtok(input, " "); while (tok) { *(nums + numsSize++) = atoi(tok); tok = strtok(NULL, " "); } qsort(nums, numsSize, sizeof(int), comp); for (i = 0; i < numsSize - 1; ++i) if (*(nums + i) == *(nums + i + 1)) return printf("%d\n", *(nums + i)), 0; return 0; }
/* 思路:直接进行排序,找到那个重复的数字即可 */ 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); } }
#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; } } }
import java.util.Scanner; public class Main { public static void main(String[] args) {// 笔试专用模块 // TODO Auto-generated method stub Scanner in =new Scanner(System.in); String str=in.nextLine(); String ch[]=str.split(" "); for (int i = 0; i < ch.length; i++) { for (int j = i+1; j < ch.length; j++) { if (ch[i].equals(ch[j])) { System.out.println(ch[j]); break; } } } } }双层循环不可以用吗😂