数组中只出现一次的数字

解题思路:使用映射hashmap,将传入的数组元素作为key,
第一次遍历时,每次遍历到新出现的元素时,put(元素,1)//key:元素,value:1,每次遍历到相同的元素时,修改value为value++,
第二次遍历:寻找value为1的key,输出即可

import java.util.HashMap;
import java.util.Map;

/**
 * @author shy_black
 * @date 2019/4/24 20:13
 * @Description:
 *
 * 题目描述
 * 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 *
 * //num1,num2分别为长度为1的数组。传出参数
 * //将num1[0],num2[0]设置为返回结果
 */
public class 数组中只出现一次的数字 {
    public static void main(String[] args) {
        int[] array = new int[]{2,2,2,2,3,3,3,4,5};
        int[] num1 = new int[1];
        int[] num2 = new int[1];
        数组中只出现一次的数字(array,num1,num2);
    }
    public static void  数组中只出现一次的数字(int [] array,int num1[] , int num2[]) {

        Map<Integer,Integer> map = new HashMap<>();
        for(Integer a : array) {
            Integer count = map.get(a);
            if(null ==  count){
                map.put(a,1);
            }else {
                map.put(a,count+1);
            }
        }

        int[] num = new int[2];
        int i = 0;
        for(int a : array) {
            Integer count = map.get(a);
            if(count  ==  1)
                num[i++] = a;
        }
        num1[0] = num[0];
        num2[0] = num[1];
        System.out.println(num1[0]);
        System.out.println(num2[0]);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值