今天開始記錄刷題的過程,每天記錄自己刷題的題目和自己的解法,歡迎朋友們給出更多更好的解法。
森林中的兔子
森林中有未知數量的兔子,提問其中若干只兔子“還有多少只兔子與你(被提問的兔子)顏色相同”。將答案收集到一個整數數組answers中,其中answers[i]是第i只兔子的回答。給你數組answers,返回森林中兔子的最少數量。
輸入示例1:
answers=[1,1,2]
輸出示例1:輸出:5
輸入示例2:
answers=[10,10,10]
輸出示例2:
11
我的思路:分組計數,使用字典記錄。
具體代碼如下:
def rabbit(answer_list):min_rabbit_num = 0answer_count = {}for i in answer_list:answer_count[i] = answer_count.get(i, 0) + 1 if i in answer_count else 1for key, value in answer_count.items():n = value // (key + 1)m = value % (key + 1)min_rabbit_num += n * (key + 1) if m == 0 else (n + 1) * (key + 1)return min_rabbit_num
# answers=[1,1,2]
min_rabbit_num = rabbit([10, 10, 10])
print(f'min_rabbit_num:{min_rabbit_num}')
?
?