链接:https://leetcode-cn.com/problems/2-keys-keyboard/description/
题面
给定一个字母 A,已知你可以每次选择复制全部字符,或者粘贴之前复制的字符,求最少需要几次操作可以把字符串延展到指定长度。
解法
一道之前做过的动规题了
虽然是过了 但是后来发现有点小问题
记录一下正确的写法
dp[i]表示延展到长度i的最少操作次数
对于每个位置j, 如果j可以被i整除, 那么i就可以由长度j操作得到
其操作次数等价于把一个长度为1的A延展到长度i/j
然后这个操作只需要做一次,意味着只要找到一个因子更新dp值就可以跳出循环
原因是这以延展步骤是等价的
18 1->2->18(1->9) 1->3->18(1->6) 次数是相同的
代码
1 | class Solution { |
dp的代码总是这么简短->_->