
算法题:一排硬币,每个硬币的面额是随意的正整数,从两端任意取,怎么取到的面额最大(你看了能给别人讲)。
发布日期:2021-05-14 14:12:15
浏览次数:19
分类:精选文章
本文共 579 字,大约阅读时间需要 1 分钟。
题目:
一排硬币,每个硬币的面额是随意的正整数,共有n个,现要求,设计一个算法,从两端取硬币,取a个(a小于n),只能从两端取,问怎么取才能使我们取道的硬币总金额最大。
前言:
这是我在2019年5月去网易校园招聘面试题,当时自己经验不足,没有解决出来这道题,今天有幸在某论坛上得到两位腾讯大神的指点(虽然我没理解他们说的什么意思,可能他们的更加的快、好,我这里只是写一下自己的思路)但是在他们的思路下,我在笔记本上画出了这个解决办法。现在讲给大家。
我的目标:你看了能给别人讲
开始了
首先,假设我们的n是10,a是4,即从10个硬币中取4个。那么大概就是下图所示:
如果我在这里使用穷举法,那我估计会被拉出去打死哈哈哈。我们把自己的注意力放在这个4个上面,然后,如果我们把这一排当成一个圈,会怎么样?类似于下图(相同颜色代表一排硬币中的同一个东西):
这样,我们只需判断,在连续 a(4) 个中 ,开头附近的和最大的了,用图来看(这里我就不用一圈的了,用直线的,容易理解):
这样,很容易得出应该怎么去选择,如果我们用取余来进行这几个下标的循环,我们可以在原数组上计算这个总和,也就是说,理论上:空间复杂度为O(1),时间复杂度为O(a)(但是没这么说的,说O(n)比较正规吧)
结束语:
写完这个教程,感觉当时自己就是糊涂了,竟然想不到这么简单的办法。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月30日 11时00分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
maven项目通过Eclipse上传到svn上面,再导入到本地出现指定的类找不到的问题
2021-05-14
maven 项目部署到tomcat下 没有class文件
2021-05-14
算法训练 未名湖边的烦恼(递归,递推)
2021-05-14
算法训练 完数(循环,数学知识)
2021-05-14
什么是接口
2021-05-14
2020版nodejs12.18.3安装配置教程
2021-05-14
iview组件库中,Form组件里的Input,无法正确绑定on-enter事件
2021-05-14
记录-基于springboot+vue.js实现的超大文件分片极速上传及流式下载
2021-05-14
JavaScript高级程序设计第四版学习记录-第九章代理与反射
2021-05-14
怎么解决Windows 10文件/文件夹正在使用无法删除
2021-05-14
matlab函数:fix 向0取整
2021-05-14
ORCAD创建元件库时,格点对不起怎么办
2021-05-14
Allegro中如何消除器件本身Pin间距报错
2021-05-14
AD中拖动器件,无法移动在一起如何解决
2021-05-14
linux--练习001-基础类型
2021-05-14
Flask--简介
2021-05-14
Flask模板--过滤器与测试器
2021-05-14
16 python基础-恺撒密码
2021-05-14
06.1 python基础--结构控制
2021-05-14