亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調試萬圣節特賣:Hackerrank

調試萬圣節特賣:Hackerrank

慕哥6287543 2023-08-24 15:44:36
這個想法是應用線性遞增折扣,直到達到該m值,然后所有下一次購買都是m問題鏈接看起來很簡單,但我的方法沒有涵蓋一些邊緣情況。例子:輸入:16, 2, 1, 9981輸出:9918預期輸出:9917我缺少什么?更好的方法也受到高度贊賞// tried on (20,3,6,80) works like charmfunction howManyGames(p, d, m, s) {    // Return the number of games you can buy    if(s<p) return 0    let remaining = s-p    let max = p    let min = m    let count = 1    while(remaining > min && max > min) {        count++        max-=d        remaining -= max    }    return count + (m !==0?Math.floor(remaining/m): 0)}問題描述:您想從著名的在線視頻游戲商店 Mist 購買視頻游戲。通常,所有游戲都以相同的價格(美元)出售p。然而,他們計劃下個月舉行季節性萬圣節促銷活動,您可以以更便宜的價格購買游戲。具體來說,您在特賣期間購買的第一款游戲將以p美元出售,但您隨后購買的每款游戲將以d比您購買的前一款游戲便宜的美元出售。這種情況將持續下去,直到成本變得小于或等于m美元,之后您購買的每個游戲m都將花費美元。例如,如果 p=20 , d=3 , m=6,那么以下是您購買的前 11 款游戲的費用(按順序排列):20, 17, 14, 11, 8, 6, 6, 6, 6, 6s您的 Mist 錢包里有美元。萬圣節特賣期間您可以購買多少款游戲?
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

錯誤:


while(remaining > min && max > min) {

        count++

        max-=d

        remaining -= max

    }

最大值 > 最小值


當您執行此操作時,您不是在比較當前的最大值與最小值,而是在比較上一次操作的最大值與最小值。


此外,剩余的值應始終大于最大值。


如果 max 大于 m,則您不能以 m 的成本購買商品。


看一下下面的代碼,它通過了所有測試用例。


// Complete the how many games function below.

function howManyGames(p, d, m, s) {

    // Return the number of games you can buy

    if(s<p) return 0

    let remaining = s

    let max = p

    let min = m

    let count = 0

    while(remaining > min && max > min && remaining > max) {

        count++

        remaining -= max

        max-=d

    }

    if(max > m)

        return count

    return count + (m !== 0 ? Math.floor(remaining/m): 0)

}


查看完整回答
反對 回復 2023-08-24
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號