LeetCode 🟡 3016. Minimum Number of Pushes to Type Word II
🔗 🟡 3016. Minimum Number of Pushes to Type Word II 1534
tags: Weekly Contest 381
貪心(Greedy)
計數(Counting)
排序(Sorting)
字串(String)
雜湊表(Hash Table)
題意
給定一個只由小寫英文字母組成的字串 。
手機鍵盤上編號為 到 的按鍵與不同的小寫英文字母集合對應,可以通過按這些按鍵來形成單詞。例如,按鍵 對應 ,我們需要按一次鍵來輸入 ,按兩次鍵來輸入 ,按三次鍵來輸入 。
現在你可以將編號為 到 的按鍵重新映射到 不同 字母集合。一個按鍵可以映射到 任意數量 的字母,但每個字母只能映射到一個按鍵上。
返回在手機上輸入 所需的 最少 按鍵次數。
思路:貪心(Greedy) + 計數(Counting) + 排序(Sorting)
由於我們的目標是最小化按鍵次數,因此基於貪心思路,應該將出現頻率最高的字母分配到最容易按到的位置。由於總共有 個按鍵,因此出現頻率前 高的字母在重新編號後都只需要 次按鍵,第 到 高的字母則需要 次按鍵,依此類推。
具體步驟如下:
- 首先,使用一個長度為 的陣列或雜湊表 來記錄每個字母的出現次數,則對於每個字母 ,其出現次數為 。
- 將 中的字母按照出現頻率從高到低排序。
- 按照排序後的順序,將字母依次分配到 個按鍵上。使得頻率最高的 個字母只需按一次,接下來的 個字母需要按兩次,依此類推。
- 根據每個字母的出現次數和需要按鍵的次數,計算總按鍵次數 ,返回 即可。
複雜度分析
- 時間複雜度:,其中 是字串 的長度, 是字元集合的大小,本題中為 。
- 空間複雜度:。
1 | class Solution: |
1 | class Solution { |
寫在最後
masterpiece, best quality, high quality, extremely detailed CG unity 8k wallpaper, extremely detailed, High Detail, vibrant, colors, backlight, bright, soft lighting, dreamy atmosphere, orange tone, (1girl, solo), long hair, looking at viewer, gentle smile, bangs, black hair, brown eyes, standing, sleeveless, indoors, blunt bangs, bag, sleeveless dress, handbag, dress, (orange dress), in the library, library, bookshelves, warm light filtering through windows, cozy ambiance, soft shadows, detailed background, vintage decor, scattered books, wooden furniture