Re: [閒聊] 每日leetcode

看板Marginalman作者 (enmeitiryous)時間1年前 (2024/09/05 08:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串809/1548 (看更多)
模擬周 題目:2028 finds missing observation 給定一個6面分別為1-6的骰子,給你一個長度為m的vector為被觀察到的骰子擲m次的結果 給你一個數字n代表我們錯過的觀察次數(即實際總共擲了m+n次),及全部擲的結果的點數 總和平均,求未被觀察到的n次的任一可能結果,如果不可能則回傳{} 思路: 如果全部擲點數和-m次觀察到總和<n或是>6n則為不可能的情形,除此之外我們可以將 n長度vector填滿總和差/n,再一一把總和差%n 盡量讓ans[i]=6的條件下分配下去 vector<int> missingRolls(vector<int>& rolls, int mean, int n) { int pre_ans=accumulate(rolls.begin(),rolls.end(),0); int tol=rolls.size()+n; int lim=tol*mean; if((lim-pre_ans)>6*n || (lim-pre_ans)<n ){ return {}; } else{ int cring=(lim-pre_ans)/n; vector<int> ans(n,cring); int cur=(lim-pre_ans)-(cring*n); int cc=0; while(cur!=0){ if(cur>=(6-cring)){ ans[cc]=6; cur-=(6-cring); cc++; } else{ ans[cc]+=cur; cur=0; } } return ans; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.201.58 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1725497059.A.AB4.html
文章代碼(AID): #1csFxZgq (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1csFxZgq (Marginalman)