其他分享
首页 > 其他分享> > No.532 数组中的 k-diff 数对

No.532 数组中的 k-diff 数对

作者:互联网

532. 数组中的 k-diff 数对 - 力扣(LeetCode) (leetcode-cn.com)

这道题做的很别扭,思路有点转不过来。

思路大致是,在找相差为k的数字对时,遍历过程中为避免重复,总是用每个数减去k,判断nums[i] - k是否存在于nums[]数组中。

                    于是先给数组nums[]进行排序,

public int findPairs(int[] nums, int k) {
        //先对数组排序,用HashMap存放合题意的键值对(用了HashMap就不要刻意去重),
        //用一个HashSet存放已经遍历过的数字
        int ans = 0;
        Arrays.sort(nums);
        HashMap<Integer, Integer> hashmap = new HashMap<>();
        HashSet<Integer> numSet =  new HashSet<>();
      
//先将nums[]整个存入numSet散列表其实也是一样效果 ,这里只是在加入Set集合的过程中,加了一步判断当前数字nums[i]是否有nums[i]-k和其组成键值对
//反正最后有HashMap兜底,不会出现重复计算的情况 for(int i=0; i<nums.length; i++){ int tmp = nums[i] - k; if(numSet.contains(tmp)){ hashmap.put(nums[i], tmp); } numSet.add(nums[i]); } ans = hashmap.keySet().size(); return ans; }

 

标签:No.532,HashMap,nums,int,数对,HashSet,键值,数组,diff
来源: https://www.cnblogs.com/charonkk/p/15375410.html