LeetCode in Kotlin

1814. Count Nice Pairs in an Array

Medium

You are given an array nums that consists of non-negative integers. Let us define rev(x) as the reverse of the non-negative integer x. For example, rev(123) = 321, and rev(120) = 21. A pair of indices (i, j) is nice if it satisfies all of the following conditions:

Return the number of nice pairs of indices. Since that number can be too large, return it modulo 109 + 7.

Example 1:

Input: nums = [42,11,1,97]

Output: 2

Explanation: The two pairs are:

Example 2:

Input: nums = [13,10,35,24,76]

Output: 4

Constraints:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    private fun rev(n: Int): Int {
        var n = n
        var r = 0
        while (n > 0) {
            r = r * 10 + n % 10
            n /= 10
        }
        return r
    }

    fun countNicePairs(nums: IntArray): Int {
        val revMap = HashMap<Int, Int>()
        var cnt = 0
        for (num in nums) {
            val lhs = num - rev(num)
            val prevCnt = revMap.getOrDefault(lhs, 0)
            cnt += prevCnt
            val mod = 1000000007
            cnt %= mod
            revMap[lhs] = prevCnt + 1
        }
        return cnt
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy