LeetCode 723. 粉碎糖果(模拟)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 723. 粉碎糖果(模拟)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
這個問題是實現一個簡單的消除算法。
給定一個二維整數數組 board 代表糖果所在的方格,不同的正整數 board[i][j] 代表不同種類的糖果,如果 board[i][j] = 0 代表 (i, j) 這個位置是空的。
給定的方格是玩家移動后的游戲狀態,現在需要你根據以下規則粉碎糖果,使得整個方格處于穩定狀態并最終輸出。
如果有三個及以上水平或者垂直相連的同種糖果,同一時間將它們粉碎,即將這些位置變成空的。
在同時粉碎掉這些糖果之后,如果有一個空的位置上方還有糖果,那么上方的糖果就會下落直到碰到下方的糖果或者底部,這些糖果都是同時下落,也不會有新的糖果從頂部出現并落下來。
通過前兩步的操作,可能又會出現可以粉碎的糖果,請繼續重復前面的操作。
當不存在可以粉碎的糖果,也就是狀態穩定之后,請輸出最終的狀態。
你需要模擬上述規則并使整個方格達到穩定狀態,并輸出。
解釋:
來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/candy-crush
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 把連續三個不為0的標記為負數,待刪除,橫向和縱向都要掃描
- 把標記為負數的置為0
- 按縱向掃描,填補下方的空白,雙指針法
- 遞歸處理,如果沒有需要操作的,達到穩態,返回不再遞歸
24 ms 10.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 723. 粉碎糖果(模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 329. 矩阵中的最长
- 下一篇: LeetCode 1152. 用户网站访