欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组只出现一次的数(其他数出现K次)【大厂算法面试题】

程序员文章站 2024-02-27 15:11:27
...

题目描述

给定一个整型数组 arrarr 和一个整数 k(k>1)k(k>1)。
已知 arrarr 中只有 1 个数出现一次,其他的数都出现 kk 次。
请返回只出现了 1 次的数。

解题思路

用一个map记录每个数出现的次数,如果出现多次,就标记为false,然后再遍历map,寻找value为true的key就是出现一次的数

代码实现

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param arr int一维数组 
     * @param k int 
     * @return int
     */
    public int foundOnceNumber (int[] arr, int k) {
        // write code here
        HashMap<Integer,Boolean> map = new HashMap<>();
        
        for(int i = 0;i < arr.length;i++) {
            if(map.containsKey(arr[i])) {
                map.put(arr[i],false);
            }else {
                map.put(arr[i],true);
            }
        }
        
        Set<Integer> set = map.keySet();
        
        for(int t : set) {
            if(map.get(t)) {
                return t;
            }
        }
        
        return -1;
    }
}