<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實戰(zhàn)488:祖瑪游戲

          共 1260字,需瀏覽 3分鐘

           ·

          2022-01-09 20:51

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎知識和業(yè)務邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?祖瑪游戲,我們先來看題面:
          https://leetcode-cn.com/problems/zuma-game/


          示例? ? ? ? ? ? ? ? ? ? ? ? ?

          示例 1

          輸入:board = "WRRBBW", hand = "RB"
          輸出:-1
          解釋:無法移除桌面上的所有球??梢缘玫降淖詈镁置媸牵?br mpa-from-tpl="t">- 插入一個 'R'?,使桌面變?yōu)?WRRRBBW 。WRRRBBW -> WBBW
          - 插入一個 'B'?,使桌面變?yōu)?WBBBW 。WBBBW -> WW
          桌面上還剩著球,沒有其他球可以插入。

          示例 2

          輸入:board = "WWRRBBWW", hand = "WRBRW"
          輸出:2
          解釋:要想清空桌面上的球,可以按下述步驟:
          - 插入一個 'R'?,使桌面變?yōu)?WWRRRBBWW 。WWRRRBBWW -> WWBBWW
          - 插入一個 'B'?,使桌面變?yōu)?WWBBBWW 。WWBBBWW -> WWWW -> empty
          只需從手中出 2?個球就可以清空桌面。

          示例 3

          輸入:board = "G", hand = "GGGGG"
          輸出:2
          解釋:要想清空桌面上的球,可以按下述步驟:
          - 插入一個 'G'?,使桌面變?yōu)?GG 。
          - 插入一個 'G'?,使桌面變?yōu)?GGG 。GGG -> empty
          只需從手中出 2?個球就可以清空桌面。

          示例 4

          輸入:board = "RBYYBBRRB", hand = "YRBGB"
          輸出:3
          解釋:要想清空桌面上的球,可以按下述步驟:
          - 插入一個 'Y'?,使桌面變?yōu)?RBYYYBBRRB 。RBYYYBBRRB -> RBBBRRB -> RRRB -> B
          - 插入一個 'B'?,使桌面變?yōu)?BB 。
          - 插入一個 'B'?,使桌面變?yōu)?BBB 。BBB -> empty
          只需從手中出 3?個球就可以清空桌面。


          解題

          https://www.acwing.com/solution/leetcode/content/2588/
          我們先將手中的球用哈希表來存儲一下,然后看桌上的球能否在哈希表里的球添加后消除,然后消除后遞歸處理剩下的。中間記錄需要的球數(shù),用來更新需要球數(shù)的最小值。如果最小值超出了手中球的個數(shù),則無法消除。

          時間復雜度分析:桌上的球不會超過20個,手中的球不會超過5個,所以時間復雜度為O(m+n).

          class?Solution?{
          public:
          ????string?del(string?board){
          ????????for(int?i=0;i????????????int?j=i;
          ????????????while(j????????????if(j-i>=3)
          ????????????????return?del(board.substr(0,i)+board.substr(j));
          ????????????else?i=j;
          ????????}
          ????????return?board;
          ????}
          ????int?dfs(string?board, unordered_map<char,int>&hash){
          ????????board=del(board);
          ????????if(board.size()==0)return?0;
          ????????int?rs=6,need=0;
          ????????for(int?i=0;i????????????int?j=i;
          ????????????while(j????????????need=3-(j-i);
          ????????????if(hash[board[i]]>=need){
          ????????????????hash[board[i]]-=need;
          ????????????????rs=min(rs,need+dfs(board.substr(0,i)+board.substr(j),hash));
          ????????????????hash[board[i]]+=need;
          ????????????}
          ????????????i=j;
          ????????}
          ????????return?rs;
          ????}
          ????int?findMinStep(string?board, string?hand)?{
          ????????unordered_map<char,int>hash;
          ????????for(auto?x:hand)hash[x]++;
          ????????int?res=dfs(board,hash);
          ????????return?res==6?-1:res;
          ????}
          };


          好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉發(fā)吧,你們的支持是我最大的動力 。

          上期推文:

          LeetCode1-480題匯總,希望對你有點幫助!

          LeetCode刷題實戰(zhàn)481:神奇字符串

          LeetCode刷題實戰(zhàn)482:密鑰格式化

          LeetCode刷題實戰(zhàn)483:最小好進制

          LeetCode刷題實戰(zhàn)484:尋找排列

          LeetCode刷題實戰(zhàn)485:最大連續(xù) 1 的個數(shù)

          LeetCode刷題實戰(zhàn)486:預測贏家

          LeetCode刷題實戰(zhàn)487:最大連續(xù)1的個數(shù) II


          瀏覽 10
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www日本黄色 | 青青视频偷拍 | 75精品福利导航 | 大香蕉免费在线 | 久久免费精品一区二区三区 |