LC: 4 Keys Keyboard
https://leetcode.com/problems/4-keys-keyboard/
651. 4 Keys Keyboard
Imagine you have a special keyboard with the following keys:
A: Print one
'A'on the screen.Ctrl-A: Select the whole screen.
Ctrl-C: Copy selection to buffer.
Ctrl-V: Print buffer on screen appending it after what has already been printed.
Given an integer n, return the maximum number of 'A' you can print on the screen with at most n presses on the keys.
Example 1:
Input: n = 3
Output: 3
Explanation: We can at most get 3 A's on screen by pressing the following key sequence:
A, A, AExample 2:
Input: n = 7
Output: 9
Explanation: We can at most get 9 A's on screen by pressing following key sequence:
A, A, A, Ctrl A, Ctrl C, Ctrl V, Ctrl VConstraints:
1 <= n <= 50
The Essence:
Es gibt einige Punkte, die dem Problemlöser verständlich sein sollen:
In einigen Fällen ist effizienter, dass man zweimal einfügt, als, dass man zweimal kopiert und zweimal einfügt. Wenn zweimal einfügen kann, kann man auch mehrere Mal einfügen. Man kann also die maximale Zeichenanzahl der vorherigen Operationen für die Berechnung der nächsten maximalen Zeichenanzahle der entsprechenden Operation finden.
Details:
Um zum Beispiel 5 mal einzufügen, kann man dies mit dem Wert der Einfügungen vor 6 Schritten multiplizieren. Dies entspricht natürlich der dynamischen Programmierung. Bei jedem Schritt muss das Maximum unter den Einfügung-Anzahlen gefunden werden. Schließlich konvergieren alle Einfügungen zu dem Optimum bei 4-mal.
Solution(s) and Further Explanation:
More rigorous explanation of this and the code can be found at:
Default Code:
Last updated