剑指offer最优解Java版-数组中只出现一次的数字
2019-07-03 本文已影响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)。