美文网首页剑指offer最优解Java版
剑指offer最优解Java版-数组中只出现一次的数字

剑指offer最优解Java版-数组中只出现一次的数字

作者: 全菜工程师小辉 | 来源:发表于2019-07-03 20:39 被阅读1次

    题目描述

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

    解决方法

    直接用set遍历一下数组就可。

    // num1,num2分别为长度为1的数组。传出参数
    // 将num1[0],num2[0]设置为返回结果
    import java.util.*;
    public class Solution {
        public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
            Set<Integer> set = new HashSet<>();
            for(int i=0;i<array.length;i++){
                if(set.contains(array[i])){
                    set.remove(array[i]);
                }else{
                    set.add(array[i]);
                }
            }
            Iterator<Integer> iterator= set.iterator();
            if(iterator.hasNext()){
                num1[0] = iterator.next();
            }
            if(iterator.hasNext()){
                num2[0] = iterator.next();
            }
        }
    }
    

    复杂度分析:

    • 时间复杂度:O(n)。
    • 空间复杂度:O(n)。
    哎呀,如果我的名片丢了。微信搜索“全菜工程师小辉”,依然可以找到我

    相关文章

      网友评论

        本文标题:剑指offer最优解Java版-数组中只出现一次的数字

        本文链接:https://www.haomeiwen.com/subject/mokdcctx.html