Map-map.getOrDefault()用法

      这个函数是我在做力扣题目的时候了解到的,首先,该函数的API如下:

 map.getOrDefault(key,defaultvalue)
   

     其中 key 与 defaultvalue 均可以自由幅值,如果在map集合中包含key键,则用key键,否则用defaultvalue值代替。

当时遇到的问题是力扣的1218题(求最长定差子序列)。

这是我自己的代码(效率比较低,并且代码比较繁琐)

int max = 1;
        Map<Integer,Integer> skt = new HashMap<Integer,Integer>();
        for (int i : arr) {
            Integer count = skt.get(i-difference);
            if (count !=null){
                max = max>(count+1)?max:(count+1);
                skt.put(i,count+1);
            }else
                skt.put(i,1);
        }
        return max;
这是使用后的代码(简洁明了)
public static int longestSubsequence1(int[] arr, int difference){
        int ans = 1;
        Map<Integer, Integer> skt = new HashMap<Integer, Integer>();
        for (int i : arr) {
            skt.put(i,skt.getOrDefault(i-difference,0)+1);
            ans = Math.max(ans,skt.get(i));
        }
        return ans;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值