leetcode 532. K-diff Pairs in an Array

来源:互联网 发布:旅游saas平台源码 编辑:程序博客网 时间:2024/05/22 15:35


leetcode 532. K-diff Pairs in an Array    下面这种解法TLE 

public class Solution {    public int findPairs(int[] nums, int k) {    if(nums==null||nums.length==0||k<0)  return 0;    int len = nums.length;    int res = 0;    Set<Integer> isPassed = new HashSet<Integer>();    for(int i=0;i<len;i++){    if(isPassed.contains(nums[i])){    continue;    }        Set<Integer> matched = new HashSet<Integer>();    for(int j=i+1;j<len;j++){    if(isPassed.contains(nums[j]))  continue;    if(nums[j]-nums[i]==k||nums[j]-nums[i]==-k){    matched.add(nums[j]);    }    }    res += matched.size();            isPassed.add(nums[i]);    }    return res;    }}

相同的数聚合在一起,就可以了啊。

public class Solution {    public int findPairs(int[] nums, int k) {    if(nums==null||nums.length==0||k<0)  return 0;    int len = nums.length;    int res = 0;    Map<Integer,Integer> map = new HashMap<Integer, Integer>();        for(int i:nums){    map.put(i, map.getOrDefault(i, 0)+1);    }        for(Map.Entry<Integer, Integer> entry:map.entrySet()){    if(k==0){    if(entry.getValue()>=2){    res++;    }    }else{    if(map.containsKey(entry.getKey()+k)){    res++;    }    }    }    return res;    }}


原创粉丝点击