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

【剑指Offer】数组中只出现一次的数字

程序员文章站 2022-07-10 14:34:21
...

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

解题思路

遍历一遍数组,用HashMap记录数字出现的次数,然后遍历map,找出出现1次的数字。

代码

import java.util.HashMap;
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < array.length; i++) {
            if(map.get(array[i]) == null) {
                map.put(array[i], 1);
            } else {
                map.put(array[i], map.get(array[i]) + 1);
            }
        }
        int count = 0;
        for(Integer key : map.keySet()) {
            if(map.get(key) == 1) {
                if(count == 0) {
                    num1[0] = key;
                    count++;
                } else {
                    num2[0] = key;
                }
            }
        }
    }
}