国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

leetcode375. Guess Number Higher or Lower II

focusj / 554人閱讀

摘要:猜對則本次猜測免費,猜錯則本次猜測需要花費和數字等額的金錢。其實這題的英文表述有些問題,確切來說,在所有能夠確保找到目標值的方法中,找到花費金錢最少的哪種。當等于時,即從中找到目標數字,確保找到一個數字至少需要多少錢。

題目要求
We are playing the Guess Game. The game is as follows:

I pick a number from 1 to n. You have to guess which number I picked.

Every time you guess wrong, I"ll tell you whether the number I picked is higher or lower.

However, when you guess a particular number x, and you guess wrong, you pay $x. You win the game when you guess the number I picked.

Example:

n = 10, I pick 8.

First round:  You guess 5, I tell you that it"s higher. You pay $5.
Second round: You guess 7, I tell you that it"s higher. You pay $7.
Third round:  You guess 9, I tell you that it"s lower. You pay $9.

Game over. 8 is the number I picked.

You end up paying $5 + $7 + $9 = $21.
Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.

一個猜數字游戲,數字區間為1~n,每猜一次,會有人告訴你猜中了或者當前的數字是大于結果值還是小于結果值。猜對則本次猜測免費,猜錯則本次猜測需要花費和數字等額的金錢。
問如果要確保能夠猜中數字,最少要花費多少錢。

其實這題的英文表述有些問題,確切來說,在所有能夠確保找到目標值的方法中,找到花費金錢最少的哪種。

思路

我們先用一個比較簡單的數字來找規律。當n等于3時,即從1,2,3中找到目標數字,確保找到一個數字至少需要多少錢。
查詢序列如下:

目標值3:1,2 2

目標值2:1,3

目標值1:3,2,2

可見如果要找到1,2,3中任意一個數字,最少要花費2元錢,即從2開始查詢,如果命中,則花費0元,如果沒有命中也知道目標值比2小還是比2大,下次猜測一定命中,因此該序列中找到任何一個數字最多花費2元錢。

如此可見,假如要知道min(1,n)的值,只要找到花費最小的中間點k,即遞歸的公式相當于min(1,n) = k + Math.max(min(1, k-1), min(k+1,n)) 1<=k<=n找到最小的min即可。

思路一:自頂向下的動態規劃
    public int getMoneyAmount(int n) {
        int[][] tmp = new int[n+1][n+1];
        for(int[] row: tmp){
            Arrays.fill(row, Integer.MAX_VALUE);
        }
        return getMoneyAmount(n, 1, n, tmp);
    }
    
    public int getMoneyAmount(int n, int lft, int rgt, int[][] tmp) {
        if(lft>=rgt) return 0;
        if(tmp[lft][rgt] != Integer.MAX_VALUE) return tmp[lft][rgt];
        for(int i = lft ; i<=rgt ; i++) {
            tmp[lft][rgt] = Math.min(tmp[lft][rgt], Math.max(i + getMoneyAmount(n, lft, i-1, tmp), i + getMoneyAmount(n, i+1, rgt, tmp)));
        }
        return tmp[lft][rgt];
    }
思路二:自底向上的動態規劃
    public int getMoneyAmount(int n) {
        int[][] dp = new int[n+1][n+1];
        for(int i = 2 ; i<=n ; i++) {
            for(int j = i-1 ; j>0 ; j--) {
                int min = Integer.MAX_VALUE;
                for(int k = j+1 ; k           
               
                                           
                       
                 

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77455.html

相關文章

  • 375. Guess Number Higher or Lower II

    摘要:題目鏈接又是一道的題,關鍵是找。表示最少的,當范圍是的時候。所以要求就應該遍歷切分點找出最小的值,這個切分點可能把問題分成左邊或者右邊,要取最大值才能保證所有的值都能贏。 375. Guess Number Higher or Lower II 題目鏈接:https://leetcode.com/problems... 又是一道dp的題,關鍵是找subproblem。dp[i][j]表...

    cloud 評論0 收藏0
  • Leetcode 相似題只有題號不含代碼。

    找出string里的單詞。 186. Reverse Words in a String II, 434. Number of Segments in a String combination類型題 77. Combinations 39. Combination Sum 40. Combination Sum II 216. Combination Sum III 494. Target S...

    StonePanda 評論0 收藏0
  • 前端 | 每天一個 LeetCode

    摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...

    張漢慶 評論0 收藏0
  • leetcode299. Bulls and Cows

    摘要:題目要求游戲簡單來說就是你隨手寫下一個位數,并讓你同學猜這個數字是什么。第二次再在此基礎上計算重合的值和沒有重合的值的個數。這樣的話,如果下一次遇到重復但是位置不同的值,我們可以知道它是否已經在中或是中出現過。 題目要求 You are playing the following Bulls and Cows game with your friend: You write down ...

    Kross 評論0 收藏0
  • [LeetCode] 299. Bulls and Cows

    Problem You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a ...

    stefan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<