题目描述:
数组中只出现一次的数字:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路:
1、水题,总结两种方法。
2、第一种就是利用数组下标的方法,简单利于理解。
3、第二种方法是用HashMap的方法。
参考代码:
import java.util.Arrays;
import java.util.HashMap;
public class t_3 {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
Arrays.sort(array);
int max=array[array.length-1];
int[] array2=new int[max+5];
for(int i=0;i<array.length;i++)
{
array2[array[i]]++;
}
int[] arr=new int[2];
int k=0;
for(int i=0;i<array2.length;i++)
{
if(array2[i]==1)
{
arr[k]=i;
k++;
}
}
num1[0]=arr[0];
num2[0]=arr[1];
}
public void FindNumsAppearOnce2(int [] array,int num1[] , int num2[]) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<array.length;i++){
if(map.containsKey(array[i])){
map.put(array[i],2);
}
else
{
map.put(array[i],1);
}
}
int count=0;
for (int i = 0; i < array.length; i++) {
if(map.get(array[i])==1)
{
if(count==0)
{
num1[0]=array[i];
count++;
}
else
{
num2[0]=array[i];
}
}
}
}
}