题目
给你个非空数组,只有某个数字只出现了一次,其他数字出现了两次,请找到这个数字。
2. 方法
方法1:遍历这个数组,进行亦或(其他数字必须是出现了偶数次才行),得到的结果就是出现一次的数字。
方法2:遍历这个数组,把他放入到Map中,出现的次数为value。遍历这个Map直到value为1的数字。
3.代码
我们这里只展示第二个方法
import javax.swing.text.html.HTMLDocument;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Describe:给你个非空数组,只有某个数字只出现了一次,请找到这个数字。
* 我们这里不使用亦或法
* User:lenovo
* Date:2023-02-10
* Time:10:26
*/
public class Test {
public static void main(String[] args) {
class Solution {
public int singleNumber(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for(int key : nums) {
if(!map.containsKey(key)) {
map.put(key, 1);
}else {
int tmp = map.get(key);
map.put(key, tmp + 1);
}
}
Set<Integer> set = map.keySet();
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()) {
int key = iterator.next();
if(map.get(key) == 1) {
return key;
}
}
return -1;
}
}
}
}