JAVA丑数
2024-09-18 16:37:33
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
根据题意我们可以知道,一个满足要求的数一定是之前的一个dp3* 3,dp5* 5,dp7* 7,并且这一结果一定是三个乘积的最小值,因此我们只需要记录3,5,7各自dp的值,再相互与 3,5,7 相乘,取其中的最小值,就是当前的目标值。代码如下
public int getKthMagicNumber(int k) {
int i3 = 0, i5 = 0, i7 = 0;
int[] dp = new int[k];
dp[0] = 1;
for(int i = 1; i < k; i++){
// 3 5 7 9 15 21 25
// 1 1 1 2 3 4 4 i3
// 0 1 1 1 2 2 3 i5
// 0 0 1 1 1 2 2 i7
dp[i] = Math.min(Math.min(dp[i3]*3, dp[i5]*5) , dp[i7]*7);
if(dp[i] == dp[i3]*3)i3++;
if(dp[i] == dp[i5]*5)i5++;
if(dp[i] == dp[i7]*7)i7++;
}
return dp[k-1];
}
最新文章
- 从零开始山寨Caffe&#183;壹:仰望星空与脚踏实地
- Guava学习笔记:Immutable(不可变)集合
- InnoDB源码分析--事务日志(二)
- 151003-动起来-Javascript
- chrome shortcutkey
- windows下mongodb安装与使用整理
- 安装SQL Server 2008 R2 Enterprise错误:&#39;&#39; is not a valid login or you do not have permission
- 用英文加优先级来解读C的声明
- java IO文件操作简单基础入门例子,IO流其实没那么难
- buttongroup中content一次性加载的解决方法
- lintcode 链表求和
- Dynamics 365中的批量删除作业执行频率可以高于每天一次吗?
- Mysql基本架构及查询流程
- JS AJAX 跨域
- linux运维工作内容及岗位要求
- Java知多少(8)类库及其组织结构
- web服务器检测
- Python的set集合详解
- java中静态变量,静态代码块,静态方法,实例变量,匿名代码块等的加载顺序
- BluetoothSocket详解