Re: [閒聊] 每日leetcode

看板Marginalman作者 (死肥肥社管)時間1年前 (2024/09/05 08:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串810/1548 (看更多)
※ 引述《enmeitiryous (enmeitiryous)》之銘言: : 模擬周 : 題目:2028 finds missing observation : 給定一個6面分別為1-6的骰子,給你一個長度為m的vector為被觀察到的骰子擲m次的結果 : 給你一個數字n代表我們錯過的觀察次數(即實際總共擲了m+n次),及全部擲的結果的點數 : 總和平均,求未被觀察到的n次的任一可能結果,如果不可能則回傳{} : 思路: : 如果全部擲點數和-m次觀察到總和<n或是>6n則為不可能的情形,除此之外我們可以將 : n長度vector填滿總和差/n,再一一把總和差%n 盡量讓ans[i]=6的條件下分配下去 思路差不多 先求n個骰子總和 在[n, 6n]範圍才合法 接下來把骰子平均點數 多出來的餘數另外加就可以了 class Solution { public: vector<int> missingRolls(vector<int>& rolls, int mean, int n) { vector<int> ans(n, 0); int m = rolls.size(), total = n+m; int m_rolls = accumulate(rolls.begin(), rolls.end(), 0); int n_rolls = mean * total - m_rolls; if(n_rolls < n || n_rolls > n*6 ) return {}; int avg_point = n_rolls / n, reminder = n_rolls % n; for(int i = 0; i < n; ++i){ ans[i] = avg_point; if(i < reminder) ans[i]++; } return ans; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.222.80 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1725497252.A.6D0.html
文章代碼(AID): #1csF-aRG (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1csF-aRG (Marginalman)