less than 1 minute read

Problem Statement

leetcode problem link

Brute Force [Accepted]

class Solution:
    def countLargestGroup(self, n: int) -> int:
        group = defaultdict(list)
        res = 0
        largest_group = 0
        for i in range(1, n + 1):
            sum_val = 0
            num = i
            while i > 0:
                sum_val += (i % 10)
                i //= 10
            group[sum_val].append(num)
            largest_group = max(largest_group, len(group[sum_val]))

        for arr in group.values():
            if len(arr) == largest_group:
                res += 1
        return res

Editorial

Approach: Hash Map

class Solution:
    def countLargestGroup(self, n: int) -> int:
        hashMap = collections.Counter()
        for i in range(1, n + 1):
            key = sum([int(x) for x in str(i)])
            hashMap[key] += 1
        maxValue = max(hashMap.values())
        count = sum(1 for v in hashMap.values() if v == maxValue)
        return count