Given two non-negative integers low
and high
, return the count of odd numbers between low
and high
(inclusive).
Before we start implementing the solution, let’s clarify a few things:
low
and high
always non-negative integers with 0 <= low <= high
?low
and high
?low
and high
?Let’s assume typical constraints (e.g., values less than (10^9)) and that low
and high
are valid as per the problem statement.
To determine the count of odd numbers within the interval [low, high]
, we can follow this approach:
n
such that n % 2 != 0
.low
is odd, include it; otherwise, consider the next number (if within bounds).high
is odd, include it; otherwise, consider the preceding number (if within bounds).1
to high
.1
to low-1
.low
and high
.Given x
, the number of odd numbers from 1
to x
is (x + 1) // 2
.
Here’s the implementation of the above strategy:
def count_odds(low: int, high: int) -> int:
def count_odds_up_to(x: int) -> int:
return (x + 1) // 2
return count_odds_up_to(high) - count_odds_up_to(low - 1)
# Example usage
low = 3
high = 7
print(count_odds(low, high)) # Output: 3 (numbers are 3, 5, 7)
The time complexity of this solution is (O(1)) as it involves a fixed amount of arithmetic operations irrespective of the input size.
Using this efficient mathematical approach ensures that the solution works optimally even for large values of low
and high
.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?