带你快速刷完67道剑指offer
这是六则或许对你有些许帮助的信息:
⭐️1、阿秀与朋友合作开发了一个编程资源网站,目前已经收录了很多不错的学习资源和黑科技(附带下载地址),如过你想要寻求合适的编程资源,欢迎体验以及推荐自己认为不错的资源,众人拾柴火焰高,我为人人,人人为我🔥!
2、👉23年5月份阿秀从字节跳动离职跳槽到某外企期间,为方便自己找工作,增加上岸几率,我自己从0开发了一个互联网中大厂面试真题解析网站,包括两个前端和一个后端。能够定向查看某些公司的某些岗位面试真题,比如我想查一下行业为互联网,公司为字节跳动,考察岗位为后端,考察时间为最近一年之类的面试题有哪些?
4、😍免费分享阿秀个人学习计算机以来收集到的免费学习资源,点此白嫖;也记录一下自己以前买过的不错的计算机书籍、网络专栏和垃圾付费专栏;也记录一下自己以前买过的不错的计算机书籍、网络专栏和垃圾付费专栏
5、🚀如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人踩过的坑和留下的经验,事实上你现在遇到的大多数问题你的学长学姐师兄师姐基本都已经遇到过了。
6、🔥 欢迎准备计算机校招的小伙伴加入我的学习圈子,一个人踽踽独行不如一群人报团取暖,圈子里沉淀了很多过去21/22/23/24/25届学长学姐的经验和总结,好好跟着走下去的,最后基本都可以拿到不错的offer!如果你需要《阿秀的学习笔记》网站中📚︎校招八股文相关知识点的PDF版本的话,可以点此下载 。
No67、剪绳子
题目描述
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
输入描述:
Text Only | |
---|---|
输出描述:
Text Only | |
---|---|
示例1
输入
Text Only | |
---|---|
输出
Text Only | |
---|---|
1、很厉害的一种思路
题目分析:
- 先举几个例子,可以看出规律来。
- 4 : 2*2
- 5 : 2*3
- 6 : 3*3
- 7 : 2*2*3 或者4*3
- 8 : 2*3*3
- 9 : 3*3*3
- 10:2*2*3*3 或者4*3*3
- 11:2*3*3*3
- 12:3*3*3*3
- 13:2*2*3*3*3 或者4*3*3*3
下面是分析: * 首先判断k[0]到k[m]可能有哪些数字,实际上只可能是2或者3。 * 当然也可能有4,但是4=22,我们就简单些不考虑了。 * 5<23,6<33,比6更大的数字我们就更不用考虑了,肯定要继续分。 * 其次看2和3的数量,2的数量肯定小于3个,为什么呢?因为222<33,那么题目就简单了。 * 直接用n除以3,根据得到的余数判断是一个2还是两个2还是没有2就行了。 * 由于题目规定m>1,所以2只能是11,3只能是21,这两个特殊情况直接返回就行了。 * 乘方运算的复杂度为:O(log n),用动态规划来做会耗时比较多。
C++ | |
---|---|
1-1、力扣上的一种讲解
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:6 MB, 在所有 C++ 提交中击败了100.00%的用户
C++ | |
---|---|
2、一种DP讲解方法
讲解视频:
https://www.bilibili.com/video/BV18E411T7dU?from=search&seid=16580267998265505121
3、这种DP更容易懂一些
讲解视频:https://www.bilibili.com/video/BV1C7411V7s6?from=search&seid=16580267998265505121
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:6 MB, 在所有 C++ 提交中击败了100.00%的用户
j<=i/2 是因为 f(5) = f(1)f(4) f(5) = f(2)*f(3) f(5) = f(3)**f(2)
f(5) = f(4)*f(1) ,可以看到走到后面去了有回来了,所以走一半即可,但一定要走到一半才行,不能小于i/2,必须是小于等于
二刷:
运行时间:3ms 占用内存:508k
C++ | |
---|---|
剪绳子-2(力扣54题)
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。
请问 k[0]*k[1]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
Text Only | |
---|---|
1、DP会溢出,只能用上述规律这一种方法来做了
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:6.2 MB, 在所有 C++ 提交中击败了100.00%的用户