1523. Count Odd Numbers in an Interval Range
給定 low 跟 high 這個範圍,
求 [low, high] 這個區間中有多少個奇數。
Example 1:
Input: low = 3, high = 7
Output: 3
Explanation: [3, 7] 這個區間的奇數有 [3, 5, 7] 這三個
Example 2:
Input: low = 8, high = 10
Output: 1
Explanation: [8, 10] 這個區間的奇數有 [9] 這一個
解題思路:
基本上可以分成奇數偶數的 case 來探討:
case 1: (odd, odd)
ex: [3, 7], 答案為 (7 - 3) / 2 + 1 = 3
case 2: (odd, even)
ex: [3, 8], 答案為 (8 - 3) / 2 + 1 = 3 <-除法向下取整
case 3: (even, odd)
ex: [4, 7], 答案為 (7 - 4) / 2 + 1 = 2 <-除法向下取整
case 4: (even, even)
ex: [4, 8], 答案為 (8 - 4) / 2 = 2
可以歸納出當任一個邊界為奇數時答案就需要加一。
C++ code:
class Solution {
public:
int countOdds(int low, int high) {
if((low & 1) || (high & 1)) return (high - low) / 2 + 1;
return (high - low) / 2;
}
};