HashMap遍历方法

HashMap统计数组元素

137. 只出现一次的数字 II
class Solution {
    /*
    位运算  异或  ^

    1 ^ 0 = 1
    两个相同的数字进行异或运算结果为0
    1 ^ 1 = 0;       

    通过逻辑电路 如何设计出三个数操作互相抵消? 没有深入的学习过底层电路

    优先使用HashMap来解题

    
    
     */
    public int singleNumber(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int num:nums){
            Integer in = map.get(num);
            if(in==null){
                map.put(num,1);
            }else{
                map.put(num,in+1);
            }
        } 

        for(Integer key:map.keySet()){
            if(map.get(key) ==1){
                return key;
            }
        }
//V put(K key,V value)
        return 0;

    }
}
169. 多数元素

找数量>len/2的元素

class Solution {
    /**
        如何通过一次遍历找出
     */
    // V put(K key,V value)
    public int majorityElement(int[] nums) {
        int len = nums.length;

        Map<Integer,Integer> map = new HashMap<>();

        for(int i = 0;i<len ;i++){
            Integer in = map.get(nums[i]);
            if(in == null){
                map.put(nums[i],1);
            }else{
                map.put(nums[i],in+1);
            }
        }

        for(Map.Entry<Integer,Integer> entry:map.entrySet()){
            if(entry.getValue()>len/2){
                return entry.getKey();
            }

        }
        return -1;
    }
}
class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length / 2];
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值