4092. Binary Digit Score
DifficultyEasy
Description
You are given two integers a and b.
Let s1 and s2 be the number of set bits in the binary representations of a and b, respectively.
The score of these integers is defined as follows:
- If
s1 >= s2, the score iss1 * s2. - Otherwise, the score is
s2 / s1using integer division.
Return an integer representing the score of a and b.
A set bit refers to a bit in the binary representation of a number that has a value of 1.
Example 1:
Input: a = 14, b = 6
Output: 6
Explanation:
- The binary representation of
a = 14is"1110", sos1 = 3. - The binary representation of
b = 6is"110", sos2 = 2. - Since
s1 > s2, the score ofaandbiss1 * s2 = 3 * 2 = 6.
Example 2:
Input: a = 5, b = 15
Output: 2
Explanation:
- The binary representation of
a = 5is"101", sos1 = 2. - The binary representation of
b = 15is"1111", sos2 = 4. - Since
s1 < s2, the score ofaandbiss2 / s1 = 4 / 2 = 2.
Example 3:
Input: a = 10, b = 12
Output: 4
Explanation:
- The binary representation of
a = 10is"1010", sos1 = 2. - The binary representation of
b = 12is"1100", sos2 = 2. - Since
s1 == s2, the score ofaandbiss1 * s2 = 2 * 2 = 4.
Constraints:
1 <= a, b <= 100
Solutions
Solution 1: Bit Count
Thinking
Both \(a\) and \(b\) are at most \(100\), so the number of \(1\)s in their binary representations can be counted directly. The score depends only on how those two popcounts compare.
When \(s_1\ge s_2\) the score is the product; otherwise it is the integer quotient of \(s_2\) divided by \(s_1\). Both inputs are at least \(1\), so \(s_1\) is never \(0\).
Count the set bits of each number once, then return according to that comparison.
Let \(s_1\) and \(s_2\) be the number of \(1\)s in the binary representations of \(a\) and \(b\). If \(s_1\ge s_2\), the score is \(s_1\cdot s_2\). Otherwise it is the integer quotient \(s_2/s_1\).
The time complexity is \(O(1)\) and the space complexity is \(O(1)\).
1 2 3 4 5 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 | |