Java最小因式分解_Javascript-625-最小因式分解——腾讯面试题库
出题指数(最大5):?
题目
给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a。
如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0。
样例 1
输入:
48
输出:
68
样例 2
输入:
15
输出:
35
提示:
“不存在这样的结果”有一种情况是:给定的整数含有大于10的质数因数,不要忘了判断
题解
我们可以从最低位数字(个位数字)开始枚举答案,尽量把小的数位上的数字放得越大越好。
所以我们从最低位开始枚举,并一直放 9 直到 a 不能被 9 整除,即 a 能表示成 a = a0 * 9^t 且 t 尽量大。接下来,我们一直放 8 直到 a0 不能被 8 整除,一直放 7 直到 a0 不能被 7 整除,以此类推。这种贪心方法和深度优先搜索的策略本质上是一样的,只不过直接找出了最终答案,避免了不必要的搜索。
复杂度分析
时间复杂度:O(log a),将一个数进行因式分解后,它最多可以表示成 O(log a)个数的乘积。
空间复杂度:O(1)。
Javascript实现
/**
* @param {number} a
* @return {number}
*/
var smallestFactorization = function (a) {
result = [];
// 10以下的直接返回本身
if (a < 10) {
return a;
}
// 太大舍弃
else if (a > 2 ** 31) {
return 0;
}
let k = 9;
while (a > 1 && k > 1) {
if (a % k === 0) {
a = a / k;
result.unshift(k);
// k = 9; k不需要重置为9,因为每次都是贪心策略,大于当前k的值已经无法被a整除
continue;
}
else {
k--;
}
}
result = Number(result.join(‘‘));
// 判断因式是否有大于10的质数
if (result > 2 ** 31 || a >= 10) return 0;
return result;
};
console.log(smallestFactorization(22));
console.log(smallestFactorization(15));
做题心得
最近在面前端的实习工作,js系统学习了一下,然后果断python转js。js还是香啊,各路转换函数一应俱全。
用到的转换函数:
存储结果从个位开始依次从数组头部加进来——unshift()
将数组去掉各元素之间的逗号,转为字符串——join()
字符串转为数字——Number()
Java最小因式分解_Javascript-625-最小因式分解——腾讯面试题库相关推荐
- java组卷系统框架_java毕业设计_springboot框架的试题库自动组卷
今天介绍一个java毕设题目, 题目内容为springboot框架的试题库自动组卷, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+spri ...
- LEETCODE 625 最小因式分解
625. 最小因式分解 题目描述: 给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a. 如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0. 递归因式分解法 ...
- Java 第 21 课 1200. 最小绝对差 539. 最小时间差
第 21 课 1200. 最小绝对差 539. 最小时间差 基础知识 Java ArrayList 方法 List.of 和 Arrays.asList ArrayList 排序 1200. 最小绝对 ...
- java字典序最小值_字典序最小问题
package demo1; import java.util.Scanner; /** * 字典序的最小的问题 * 给定长度为N的字符串s,要构造一个长度为N的字符串T,开始T是一个空的字符串,随后 ...
- POJ3522Slim Span(最大边与最小边差值最小的生成树)
感谢这篇文章 本文对其代码,进行一些解释. 这道题的题意很明了.求最大边与最小边差值最小的生成树 首先,把所有的生成树都求出来是不可能的,所以,必须用别的方法. 在学习次小生成树的过程中,知道了一个最 ...
- python opencv最小外接矩形中心点_Opencv绘制最小外接矩形、最小外接圆
Opencv中求点集的最小外结矩使用方法minAreaRect,求点集的最小外接圆使用方法minEnclosingCircle. minAreaRect方法原型: RotatedRect minAre ...
- Destroying The Graph 最小点权集--最小割--最大流
Destroying The Graph 构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), ...
- mysql最小费用最大流问题_最小费用最大流问题
复杂网络中,单源单点的最小费用最大流算法(MCMF)应用广泛. 在实际网络问题中,不仅考虑从 Vs到 Vt的流量最大,还要考虑可行流在网络传送过程中的费用问题,这就是网络的最小费用最大流问题. 最小费 ...
- opencv 图像轮廓特征 图像面积,轮廓周长,外接矩形、最小外接矩形、最小外接圆、拟合椭圆
找出图像轮廓 contours, hierarchy = cv.findContours(thresh, 3, 2) 画出图像轮廓 cnt = contours[1] cv.drawContours( ...
最新文章
- 项目中使用 Git 高频场景
- 制作Windows Server 2008安装启动U盘
- Ubuntu怎么用c/c++编程
- P1121 环状最大两段子段和
- e0312 不存在用户定义的_VistaPro创建自定义变量
- CSDN主页下如何添加访客地图?
- jsp,div 限制字数,超出部分用省略号代替
- 重磅!全球Top 1000计算机科学家h指数公布:中国53位学者上榜!张宏江居大陆科学家之首...
- hbase meta中分区信息错误的记录
- 2006年星座运势全解-射手
- OpenCV 实现分水岭算法
- sts bug SpringJUnit4ClassRunner
- 初学者怎样快速学会 SQL
- ubuntu 16.04 wps安装教程
- 寻宝游戏(DFS+动态规划)
- vue3项目简化Compositions API使用-省去频繁的import和各use函数调用
- Wemos D1 Mini / nodeMcu / esp8266 + GUIslice库 驱动ST7789 TFT显示屏
- cropper(裁剪图片)插件使用(案例)
- Android手机做电脑摄像头
- matlab打开F90文件,ifort编译f90程序命令
热门文章
- 为什么很多人工作都不开心?【转】
- USACO 3.2 Sweet Butter 香甜的黄油
- installation of package ‘igraph’ had non-zero exit status的解决方案
- wan端口未连接怎么弄_wan口,小编教你wan口未连接该怎么办
- RaspBerry Pi 系统安装——Raspbian(精简版)
- openlayers加载gml
- 田纳西大学计算机科学,田纳西大学电气工程与计算机科学
- 关于“专家门”事件的回复
- 2019蓝桥杯国赛E-第八大奇迹
- 2021年西雅图第一家通过传统IPO上市的公司