1512. Number of Good Pairs

Lc-1512
categories: [LeetCode]
tags: [Array, HashTable,Math,easy]

1512. Number of Good Pairs

题目大意:

给定一个数组nums, 好数对的定义是如果nums[i] == nums[j]
并且 i < j, 要求返回好数对的数量

解题思路:

根据题意我们发现当数组中第一次出现元素 k, 我们将其放在map当中, 
并让其value=1,接下来继续遍历数组, 后面再出现元素k,其必将满足
nums[i] == nums[j] && i < j, 后面再出现一个相同元素k,
就说明我们已经找到一对好数对了,同时在map中的该元素的value上加1
当第三次再出现该元素,因为之前已经有两个元素了, 所以这次就一下找到两对
好数对, 然后再将map中的元素k的value+1,以此类推。 

注意:

None

复杂度:

Time Coplexity: O(N)
Space Complexity: O(N)

Code示例:

class Solution {
    public int numIdenticalPairs(int[] nums) {
        int ans = 0;
        Map map = new HashMap<>();
        for (int num : nums) {
            Integer freq = map.get(num);
            
            if (freq == null) {
                map.put(num, 1);
            } else {
                ans += freq;
                map.put(num, freq+1);
            }
        }
        return ans;
    }
}

你可能感兴趣的:(HashMap,leetcode)