当前位置:网站首页>剑指offer day24 数学(中等)
剑指offer day24 数学(中等)
2022-04-23 06:58:00 【余cos】
day24题目:剑指 Offer 14- I. 剪绳子、剑指 Offer 57 - II. 和为s的连续正数序列、剑指 Offer 62. 圆圈中最后剩下的数字
知识点:数学、双指针,难度为中等、简单、简单
学习计划链接:「剑指 Offer」 - 学习计划
| 题目 | 知识点 | 难度 |
|---|---|---|
| 剑指 Offer 14- I. 剪绳子 | 数学、动态规划 | 中等 |
| 剑指 Offer 57 - II. 和为s的连续正数序列 | 数学、双指针、枚举 | 简单 |
| 剑指 Offer 62. 圆圈中最后剩下的数字 | 递归、数学 | 简单 |
剑指 Offer 14- I. 剪绳子
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
示例 1:
输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1
示例 2:
输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36
提示:
2 <= n <= 58
注意:本题与主站 343 题相同:https://leetcode-cn.com/problems/integer-break/
思路及代码
数学题,没做出来,看了题解的推导 面试题14- I. 剪绳子,主要有以下几点
- 将绳子以相等长度切分为多段时,所得乘积最大。
- 尽可能将绳子以
长度3等分为多段时,乘积最大- 若最后一段为
2保留,不在拆分为1+1 - 若最后一段为
1应将一份3+1换为2+2
则有以下算法流程:
- 若最后一段为
/** * @param {number} n * @return {number} */
var cuttingRope = function(n) {
if(n <= 3) return n-1
let [a, b] = [Math.floor(n/3), n%3]
if(b === 0) return Math.pow(3, a)
if(b === 1) return Math.pow(3, a-1) * 4
return Math.pow(3, a) * 2
};
剑指 Offer 57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入: target = 9
输出: [[2,3,4],[4,5]]
示例 2:
输入: target = 15
输出: [[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
思路及代码
双指针。
/** * @param {number} target * @return {number[][]} */
var findContinuousSequence = function(target) {
let res = []
let [l, r] = [1, 2]
while(l < r) {
let sum = (l+r) * (r-l+1) / 2
if(sum === target) {
let temp = []
for(let i = l; i <= r; i++)
temp.push(i)
res.push(temp)
++l
} else if(sum < target) ++r
else ++l
}
return res
};
剑指 Offer 62. 圆圈中最后剩下的数字
0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。
例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。
示例 1:
输入: n = 5, m = 3
输出: 3
示例 2:
输入: n = 10, m = 17
输出: 2
限制:
1 <= n <= 10^51 <= m <= 10^6
思路及代码
约瑟夫环。
/** * @param {number} n * @param {number} m * @return {number} */
var lastRemaining = function(n, m) {
let res = 0
for(let i = 2; i <= n; i++) {
res = (res + m) % i
}
return res
};
版权声明
本文为[余cos]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45890533/article/details/124356711
边栏推荐
- Quick rehearsal exercise
- C outputs a two-dimensional array with the following characteristics.
- 网赚APP资源下载类网站源码
- The following program deletes n consecutive words starting from the ith character from the string str
- Data security has become a hidden danger. Let's see how vivo can make "user data" armor again
- [appium] encountered the problem of switching the H5 page embedded in the mobile phone during the test
- Go语学习笔记 - 语言接口 | 从零开始Go语言
- LeetCoed18. Sum of four numbers
- 华硕笔记本电脑重装系统后不能读取usb,不能上网
- 一款拥有漂亮外表的Typecho简洁主题_Scarfskin 源码下载
猜你喜欢

1216_MISRA_C规范学习笔记_控制流的规则要求

数据库之MySQL——基础篇

Principle of sentinel integrating Nacos to update data dynamically

岛屿的个数

浏览器中的 Kubernetes 和 IDE | 交互式学习平台Killercoda

雲計算技能大賽 -- openstack私有雲環境 第一部分

AAAI 2022招募讲者啦!!

分布式服务治理Nacos

Intranet penetration series: icmptunnel of Intranet tunnel (Master James Barlow's)

idea:使用easyYapi插件导出yapi接口
随机推荐
How to import Excel data in SQL server, 2019 Edition
Convert object to URL
分布式服务治理Nacos
Research on system and software security (2)
Depth of binary tree
Intranet penetration series: dnscat2 of Intranet tunnel
访问数据库的时候出现错误 Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY.详解
将实例化对象的方法 给新的对象用
【无标题】
云计算技能大赛 -- openstack私有云环境 第二部分
Asynchronous learning
Samsung, March to the west again
WordPress爱导航主题 1.1.3 简约大气网站导航源码网址导航源码
Buuctf misc brush questions
Jetson Xavier NX (3) bazel mediapipe installation
华硕笔记本电脑重装系统后不能读取usb,不能上网
扎心了!一女子发朋友圈羡慕别人按时发工资被开除,连点赞的同事也一同被开除了...
Flutter之Provider共享数据的两种方式
巨头押注的全屋智能,正在驱动海信、华为、小米们「自我革命」
AAAI 2022招募讲者啦!!