美文网首页剑指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