1512. Number of Good Pairs

碼農老哥發表於2021-01-02

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<Integer, Integer> 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;
    }
}

相關文章