题目描述:
数组中只出现一次的数字: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路:
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
];
}
}
}
}
}