Re: [闲聊] 每日LeetCode

楼主: idiont (supertroller)   2023-02-13 08:35:38
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;
}
};
作者: Rushia (みけねこ的鼻屎)   2023-02-13 08:36:00
你赢了
作者: a9486l (a9486l)   2023-02-13 08:36:00
大师
作者: DreaMaker167 (dreamaker)   2023-02-13 08:37:00
大师
作者: SecondRun (雨夜琴声)   2023-02-13 08:46:00
大师
作者: dustsstar79 (穆)   2023-02-13 09:10:00
大师
作者: dannyko (dannyko)   2023-02-13 09:22:00
大师
作者: KusanagiYuma (草薙由麻)   2023-02-13 12:08:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com