1. 题目
给定一个数组arr,返回其中的数值的差值等于k的子数组有多少个
2. 解释
略
3. 思路
直接用hashSet进行存储,查这个值加上k后的值是否在数组中
4. 代码
public class Problem01_SubvalueEqualk {
public static List<List<Integer>> allPair(int[] arr, int k){
HashSet<Integer> set = new HashSet<>();
for(int i = 0; i < arr.length; i++){
set.add(arr[i]);
}
List<List<Integer>> ans = new ArrayList<>();
for(Integer cur : set){
if(set.contains(k + cur)){
ans.add(Arrays.asList(cur, k + cur));
}
}
return ans;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int k = 5;
System.out.println(allPair(arr, k));
}
}
输出结果:
[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
5. 总结
so easy!!!