在一个数组 nums
中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
基于hashmap键值对集合
import java.util.HashMap;
import java.util.Map;
public class SingleNumberTest5 {
public static void main(String[] args) {
int[] nums = {3, 4, 3, 3};
int singleNumber = singleNumber(nums);
System.out.println("singleNumber = " + singleNumber);
}
public static int singleNumber(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])) {
map.put(nums[i], map.get(nums[i]) + 1);
} else {
map.put(nums[i], 1);
}
}
return map.entrySet()
.stream()
.filter(x -> x.getValue() == 1)
.findFirst()
.get()
.getKey();
}
}
对于本题,整体最容易理解的思路就是基于键值对集合hashmap进行解决了
算法汇总:leetcode刷题汇总(非最终版)