出题指数(最大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-最小因式分解——腾讯面试题库相关推荐

  1. java组卷系统框架_java毕业设计_springboot框架的试题库自动组卷

    今天介绍一个java毕设题目, 题目内容为springboot框架的试题库自动组卷, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+spri ...

  2. LEETCODE 625 最小因式分解

    625. 最小因式分解 题目描述: 给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a. 如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0. 递归因式分解法 ...

  3. Java 第 21 课 1200. 最小绝对差 539. 最小时间差

    第 21 课 1200. 最小绝对差 539. 最小时间差 基础知识 Java ArrayList 方法 List.of 和 Arrays.asList ArrayList 排序 1200. 最小绝对 ...

  4. java字典序最小值_字典序最小问题

    package demo1; import java.util.Scanner; /** * 字典序的最小的问题 * 给定长度为N的字符串s,要构造一个长度为N的字符串T,开始T是一个空的字符串,随后 ...

  5. POJ3522Slim Span(最大边与最小边差值最小的生成树)

    感谢这篇文章 本文对其代码,进行一些解释. 这道题的题意很明了.求最大边与最小边差值最小的生成树 首先,把所有的生成树都求出来是不可能的,所以,必须用别的方法. 在学习次小生成树的过程中,知道了一个最 ...

  6. python opencv最小外接矩形中心点_Opencv绘制最小外接矩形、最小外接圆

    Opencv中求点集的最小外结矩使用方法minAreaRect,求点集的最小外接圆使用方法minEnclosingCircle. minAreaRect方法原型: RotatedRect minAre ...

  7. Destroying The Graph 最小点权集--最小割--最大流

    Destroying The Graph 构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), ...

  8. mysql最小费用最大流问题_最小费用最大流问题

    复杂网络中,单源单点的最小费用最大流算法(MCMF)应用广泛. 在实际网络问题中,不仅考虑从 Vs到 Vt的流量最大,还要考虑可行流在网络传送过程中的费用问题,这就是网络的最小费用最大流问题. 最小费 ...

  9. opencv 图像轮廓特征 图像面积,轮廓周长,外接矩形、最小外接矩形、最小外接圆、拟合椭圆

    找出图像轮廓 contours, hierarchy = cv.findContours(thresh, 3, 2) 画出图像轮廓 cnt = contours[1] cv.drawContours( ...

最新文章

  1. 项目中使用 Git 高频场景
  2. 制作Windows Server 2008安装启动U盘
  3. Ubuntu怎么用c/c++编程
  4. P1121 环状最大两段子段和
  5. e0312 不存在用户定义的_VistaPro创建自定义变量
  6. CSDN主页下如何添加访客地图?
  7. jsp,div 限制字数,超出部分用省略号代替
  8. 重磅!全球Top 1000计算机科学家h指数公布:中国53位学者上榜!张宏江居大陆科学家之首...
  9. hbase meta中分区信息错误的记录
  10. 2006年星座运势全解-射手
  11. OpenCV 实现分水岭算法
  12. sts bug SpringJUnit4ClassRunner
  13. 初学者怎样快速学会 SQL
  14. ubuntu 16.04 wps安装教程
  15. 寻宝游戏(DFS+动态规划)
  16. vue3项目简化Compositions API使用-省去频繁的import和各use函数调用
  17. Wemos D1 Mini / nodeMcu / esp8266 + GUIslice库 驱动ST7789 TFT显示屏
  18. cropper(裁剪图片)插件使用(案例)
  19. Android手机做电脑摄像头
  20. matlab打开F90文件,ifort编译f90程序命令

热门文章

  1. 为什么很多人工作都不开心?【转】
  2. USACO 3.2 Sweet Butter 香甜的黄油
  3. installation of package ‘igraph’ had non-zero exit status的解决方案
  4. wan端口未连接怎么弄_wan口,小编教你wan口未连接该怎么办
  5. RaspBerry Pi 系统安装——Raspbian(精简版)
  6. openlayers加载gml
  7. 田纳西大学计算机科学,田纳西大学电气工程与计算机科学
  8. 关于“专家门”事件的回复
  9. 2019蓝桥杯国赛E-第八大奇迹
  10. 2021年西雅图第一家通过传统IPO上市的公司