1.1、题目1
剑指 Offer 56 - I. 数组中数字出现的次数
1.2、解法
救命,真不会用位运算,还是用哈希表做吧,位运算过段时间再学习~~~
搞不来,虽然说哈希表时间和内存消耗确实高。。。。。
这里用Entry提出来遍历哈希表。取值放数组。
1.3、代码
class Solution {
public int[] singleNumbers(int[] nums) {
int []res = new int[2];
int j=0;
HashMap<Integer,Integer> map = new LinkedHashMap();
for(int i = 0; i < nums.length ; ++i){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
}
for(Map.Entry<Integer,Integer> entry:map.entrySet() ){
if(entry.getValue() == 1){
res[j]=entry.getKey();
j++;
}
}
return res;
}
}
2.1、题目2
剑指 Offer 56 - II. 数组中数字出现的次数 II
2.2、解法
用了跟上面那题一样的解法,位运算想学你们就去看题解吧,懒得copy过来,也不太懂
2.3、代码
class Solution {
public int singleNumber(int[] nums) {
Map<Integer, Integer> map = new HashMap();
for(int i = nums.length - 1; i >= 0; --i){
int key = nums[i];
map.put(key, map.getOrDefault(key, 0) + 1);
}
for(Map.Entry<Integer, Integer> entry: map.entrySet()){
if(entry.getValue() == 1){
return entry.getKey();
}
}
return -1;
}
}
原文创作:程序员khaos
原文链接:https://www.cnblogs.com/urmkhaos/p/15318644.html