1. 問題描述:
給你兩個非負整數low
和high
。請你返回low
和high
之間(包括二者)奇數的數目。
示例 1:
輸入:low = 3, high = 7
輸出:3
解釋:3 到 7 之間奇數數字為 [3,5,7] 。
示例 2:
輸入:low = 8, high = 10
輸出:1
解釋:8 到 10 之間奇數數字為 [9] 。
2. 思路分析:
一看到題目比較容易想到的是使用for迴圈列舉每乙個數字判斷當前的數字是否是奇數,如果是奇數那麼對其計數即可,但是仔細一分析發現還有其他的辦法,對於乙個區間上的奇數與偶數分布基本上是均勻的,也就是大部分情況下是一半一半分布的,所以我們是可以根據區間的起點與終點計算對應的奇數與偶數的數目,主要分為四種情況:
對於這種比較容易分析的題目我一般是寫出具體的例子,這樣更容易確定邊界上的一些問題,而且小的資料更容易計算正確的答案,比如寫出乙個區間為[1-10]
1 2 3 4 5 6 7 8 9 10
計算[3, 9]的奇數數目: (9 - 3) / 2 + 1 = 3
計算[3, 10]的奇數數目:(10 - 3) / 2 + 1 = 3
計算[2,10]的奇數數目:(10 - 2)/ 2 = 4
計算[2, 9]的奇數數目:(9 - 2)/ 2 + 1 = 4
所以總結上面的請主要是分為三種區間起點是奇數的情況,區間端點是偶數-偶數,偶數-奇數的情況返回即可,可以利用與操作來判斷奇數還是偶數
3. **如下:
class solution:
def countodds(self, low: int, high: int) -> int:
if low & 1 == 1:
return (high - low) // 2 + 1
else:
if high & 1 == 0: return (high - low) // 2
else: return (high - low) // 2 + 1
Python實現輸出某區間範圍內全部素數的方法
coding utf 8 www.cppcns.com 簡述 區間範圍101 200 要求 判斷這個區間內有多少個素數,並逐一輸出。def prime m,n list1 list2 for i in range m,n 1 list1.append i for jvpqihihtqb in ran...
Unity判斷物體是否在視野範圍內
然後就考慮結合遮擋剔除,但是烘焙了多次,不太理想。找到了instantoc外掛程式,發現裡面用射線檢測實現,先說一下該方法的缺點,update隨機射線,消耗高,而且必須要有collider才能檢測。相機的檢測 namespace lastzero private void update 物體自我處理...
C 隨機生成區間範圍內的隨機數
要取得 a,b 的隨機整數,使用 rand b a a 要取得 a,b 的隨機整數,使用 rand b a 1 a 要取得 a,b 的隨機整數,使用 rand b a a 1 通用公式 a rand n 其中的a是起始值,n是整數的範圍。要取得a到b之間的隨機整數,另一種表示 a int b ran...