这个函数是我在做力扣题目的时候了解到的,首先,该函数的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;
}