現有乙份 n + m 次投擲單個 六面 骰子的觀測資料,骰子的每個面從1
到6
編號。觀測資料中缺失了 n 份,你手上只拿到剩餘 m 次投擲的資料。幸好你有之前計算過的這 n + m次投擲資料的 平均值 。
給你乙個長度為 m 的整數陣列 rolls ,其中 rolls[i] 是第i
次觀測的值。同時給你兩個整數 mean
和 n。返回乙個長度為n
的陣列,包含所有缺失的觀測資料,且滿足這n + m次投擲的平均值是mean
。如果存在多組符合要求的答案,只需要返回其中任意一組即可。如果不存在答案,返回乙個空陣列。
k
個數字的 平均值 為這些數字求和後再除以k
。
注意mean
是乙個整數,所以n + m次投擲的總和需要被n + m整除。
首先要求的是另一組的總和值,記為 n_sum ,對於骰子來說,只有1-6這六個整數,因此得到的值n_sum有要求: n<=n_sum<=6*n 如果不滿足這個條件,那麼剩下的骰子組合無法滿足n_sum的值;
需要返回的陣列 res ,我們可以現初始化所有的值都為1,將待新增的值記為 ready ,然後根據 ready 的值來為每一項的值進行增加,分為兩種情況:
**如下:
classsolution:
def missingrolls(self, rolls: list[int], mean: int, n: int) ->list[int]:
n_sum = mean * (len(rolls) + n) -sum(rolls)
if n_sum > 6 * n or n_sum return
res = [1 for i in
range(n)]
ready = n_sum -n
for i in
range(n):
if ready >= 1:
if ready >= 5:
res[i] += 5ready -= 5
else
: res[i] +=ready
break
return res
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...
LeetCode每日一題(題139)
題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...