class Solution {
public:
int minSteps(int n) {
if (n <= 1) { // 如果需要的长度小于等于1,那就不需要操作了,直接返回0
return 0;
}
int ans = 0; // 初始化操作的次数
int left = n - 1; // 剩下还未生成的A的个数
int paste = 1; // 复制板上A的个数,一开始肯定要先复制一下,初始化为1
left -= paste; // 第一次复制之后肯定要粘贴,所以剩下的未生成的A减1
ans += 2; // 一次复制一次粘贴,已经操作了两次
while (left > 0){
if (left % (n - left) == 0) { // 如果剩下的需要生成的A的个数能够整除当前A的个数,那么复制全部,然后粘贴一次
paste = n - left;
left -= paste;
ans += 2;
} else { // 否则,因为复制版长度只增不减,若当下不能整除,复制后的复制版内容长度是当前的长度的倍数,同样不能整除。所以直接粘贴
left -= paste;
ans += 1;
}
}
return ans;
}
};
leetcode605题(2 Keys Keyboard)
最新推荐文章于 2021-07-30 09:29:42 发布