Leetcode 1663 - Smallest String With A Given Numeric Value

題目

Problem#

題目給你兩個數字 nk 問你: 由 n 個字母組成,所有字母加起來總和為 k 且字串字典序最小
a=1, b=2, …, z=26

想法#

最優的答案是後面都是 z 前面都是 a,先貪心找最後的 z 長度: 對於字串 Z = aa...z = 1*(a長度) + 26 假如 k 大於 Z 的話,則最後一定可以擺一個 z,亦即 k >= 1*(n-1) + 26
接下來就都擺 a ,中間的字母(夾在 az 中間 e.g. “aa…x…zz”),就擺 'a'+(k-1)

  • 時間複雜度: $\mathcal{O}(n)$
  • 空間複雜度: $\mathcal{O}(n)$

AC Code#

賞析#