651. 4 Keys Keyboard复制粘贴获得的最大长度

[抄题]:

Imagine you have a special keyboard with the following keys:

Key 1: (A): Print one ‘A‘ on screen.

Key 2: (Ctrl-A): Select the whole screen.

Key 3: (Ctrl-C): Copy selection to buffer.

Key 4: (Ctrl-V): Print buffer on screen appending it after what has already been printed.

Now, you can only press the keyboard for N times (with the above four keys), find out the maximum numbers of ‘A‘ you can print on screen.

Example 1:

Input: N = 3
Output: 3
Explanation:
We can at most get 3 A‘s on screen by pressing following key sequence:
A, A, A

Example 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 V

[暴力解法]:

时间分析:

空间分析:

[优化后]:

时间分析:

空间分析:

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

贪心算法可以从除法 and 乘法的角度来思考

[英文数据结构或算法,为什么不用别的数据结构或算法]:

[一句话思路]:

因为要做全选、拷贝、粘贴:三个数以内要进行相乘

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

复制粘贴不是乘法就是除法

[复杂度]:Time complexity: O(n) Space complexity: O(1)

[算法思想:迭代/递归/分治/贪心]:

[关键模板化代码]:

[其他解法]:

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

[是否头一次写此类driver funcion的代码] :

[潜台词] :

class Solution {
    public int maxA(int N) {
        int max = N;
        for (int i = 1; i <= N - 3; i++) {
            max = Math.max(max, maxA(i) * (N - i - 1));
        }
        return max;
    }
}

原文地址:https://www.cnblogs.com/immiao0319/p/9527679.html

时间: 2024-11-05 06:14:07

651. 4 Keys Keyboard复制粘贴获得的最大长度的相关文章

在Mac中设置Ctrl+C/V进行复制/粘贴

从Windows世界走入Mac世界,最让不习惯的是在Mac中“复制/粘贴”的快捷键是Command+C/V.而且Command键与C/V键靠得太近,只能用大拇指与食指进行操作,也让人不习惯.再加上远程桌面连接至Windows时,只能用Ctrl+C/V进行复制/粘贴,在两种快捷键之间进行切换也容易让人乱了手指. 今天终于在superuser网站上找到了解决方法(Remap Copy and Paste shortcuts on a Mac中的第二个回答),设置方法如下: 1. 进行System P

vi的复制粘贴命令 -- (转)

vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分重要: 1.命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式.在命令模式中输入字幕“i”就可以进入vi的输入模式编辑文件. 2.输入模式:在这个模式中我们可以编辑.修改.输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式.当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式

xshell复制粘贴

用户看到这个标题肯定会觉得小编脑子坏掉了,复制粘贴不就是Ctrl+C,Ctrl+V嘛,但是在xshell却不尽然. 现象: 在xshell界面中需要用到之前的一段代码,自然是选中,熟练的键入Ctrl+C,打算复制,可是再次键入Ctrl+V时,一点反应都没有,无论怎样尝试都是一样. 原因分析: 在xshell中,Ctrl+C 代表着中断当前指令,与WIndows中的复制的快捷键重复,所以才出现了上述的现象 解决方法 1. 使用xshell中的复制粘贴快捷键 复制:Ctrl+Insert 粘贴:Sh

Vim 安装、配置及复制粘贴操作

1.安装:sudo apt-get install vim 2.配置:cd ~ #进入用户主目录 touch .vimrc #.后缀文件不可见 vi .vimrc #打开文件 输入: 1 set cindent 2 3 set shiftwidth=4 4 set tabstop=4 5 set softtabstop=4 6 7 set number 8 set hlsearch 9 syntax on 10 11 set showmode 12 set foldmethod=syntax 1

仿复制粘贴功能,长按弹出tips的实现

方案分析: 方案一:监听长按事件弹出PopupWindow[可行,缺点布局是固定的,小语种下会出现菜单截断现象] 方案二:弹出ContextMenu[不可行,因为ContextMenu的菜单是上下排列] 方案三:通过hierarchyviewer.bat查看可知,Editor的复制粘贴功能用的是toolbar,利用此功能也可实现[可行,代码量大] 方案四:通过查看Editor源码分析可知,只需要实现ActionMode.CallBack2接口,setMode即可实现[可行,简单实现接口,再添加少

《移动医疗:智能化医疗时代的来临》:2014年的旧书了,以网上可见的资料的复制粘贴为主。二星

本书中文版比较新,但是是从2014年的一本英文书翻译过来的.从时间上来说,过去的这两年移动医疗行业发生了比较大的变化,这本书已经过时了. 除此之外,本书以互联网上公开可见的资料的复制粘贴为主,作者缺乏对这个行业的深入了解,书中缺乏作者对资料的概括分析总结. 总体评价为二星.

ueditor编辑文章时候,复制粘贴内容,原来的图片不能显示

ueditor编辑文章时候.当现有文章有图片的时候, 再复制粘贴文本进去的时候.里面的图片就不能显示了, 编辑器查看文章Html代码,图片路径显示为:src="http://localhost/images/net/error!" 正确是:src="http://localhost/images/adc.jpg" 而我用的是自己定义的server的一个路径 查看源代码,发现这块功能是例如以下流程 当粘贴后.UE会将眼下编辑的全部内容中元素又一次赋值属性,即源代码中的

在LINUX终端和VIM下复制粘贴

http://www.tinylab.org/linux-terminal-and-paste-copy-under-vim/ 在GUI界面下,我们可以很自由的复制粘贴.但是在字符界面下,我们不得不用鼠标选定,然后单击右健,选择复制,再到别处去Ctrl-v.并且对于 那些用没有配置过的VIM来说,VIM的粘贴板和X Window的粘贴板还不共享.这在码字的过程中,感觉非常不流畅.下面,我们就尝试解决这个问题. 首先我们得让VIM和X Window共享一个粘贴板,这样我们就可以像在GUI界面下一样

【vim小小记】vim的复制粘贴(包括系统剪贴板)

1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只是方向不同,比如: w 跳转到下个word,W:跳转到上个word f 某行正向查找并跳转 F: 反向.... 然后部分双写的字母有行操作: yy 复制一行 dd 删除一行 所以, p就是在当前光标后粘贴,P就是在当前光标前粘贴 另外,说完p,其实还有几个命令有时也是很有用的 gp,和p的功能基本一