首页 > 试题广场 >

找出数组中只出现一次的数字

[编程题]找出数组中只出现一次的数字
  • 热度指数:2113 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一组未排序的整数,其中一个数字只出现一次,剩下的所有数字都出现了三次。找出这个只出现一次的数字。例如输入: [1,2,2,2,3,3,3],输出为1

输入描述:
输入包含两行:
第一行有一个整数n(1 ≤ n ≤ 100000),表示数组数字个数n,个数满足题意。 第二行为n个整数,范围均在32位整数,以空格分隔,保证输入数据合法


输出描述:
出现一次的那个数字
示例1

输入

7 1 2 2 2 3 3 3

输出

1
import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        Arrays.sort(arr);
        Stack<Integer> stack = new Stack<>();
        for(int i=0;i<n;i++){
            if(stack.isEmpty()||stack.peek()!=arr[i]){
                stack.push(arr[i]);
            }else{
                stack.pop();
                i=i+1;
            }
        }
        int num = stack.pop();
        System.out.println(num);
    }
}
发表于 2019-09-12 17:00:27 回复(0)