剑指offer——面试题34:丑数

Solution1:

最容易想到的,也是最不可能AC的

class Solution {public:int GetUglyNumber_Solution(int index) { //输出第index个丑数int count = 1;if(index == 1)return count;for(int i = 2; ; i++){if(isUglyNum(i) == true){count++;if(count == index)return i;}}}bool isUglyNum(int n) {while (n > 1) {for (int i = 2; i <= n; i++){if (n%i == 0){ //如果n能被i整除,i是因子,对i分小于等于5和大于5两种情况讨论if (i <= 5) {n /= i;break;}if (i > 5)return false;}}}return true;}
};

Solution2:

记住这种查数的技巧!!!
答案参考网址:
[1]http://www.cnblogs.com/qqky/p/6964764.html
[2]https://www.nowcoder.com/profile/5810633/codeBookDetail?submissionId=16629921
解题思路:https://blog.csdn.net/lhanchao/article/details/52079323
本题定义三个变量,对于当前已排好序找到的最大的丑数M,记录恰乘2、乘3、乘5大于当前最大的丑数M的三个位置,然后求三个位置*2 *3 *5的最小值即为下一个丑数的值

class Solution {
public:int GetUglyNumber_Solution(int index) {if (index < 7) return index;vector<int> res(index);res[0] = 1;int t2 = 0, t3 = 0, t5 = 0, i;for (i = 1; i < index; ++i) {res[i] = min(res[t2] * 2, min(res[t3] * 3, res[t5] * 5));if (res[i] == res[t2] * 2) t2++;if (res[i] == res[t3] * 3) t3++;if (res[i] == res[t5] * 5) t5++;}return res[index - 1];}
};

再感慨一句,别人的思路真牛逼啊~

剑指offer——面试题34:丑数相关推荐

  1. 剑指offer面试题[34]丑数

    题目描述        把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数 ...

  2. 剑指offer 面试题49. 丑数

    我们把只包含因子 2.3 和 5 的数称作丑数(Ugly Number).求按从小到大的顺序的第 n 个丑数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, ...

  3. 剑指offer面试题49. 丑数

    题目描述 我们把只包含因子 2.3 和 5 的数称作丑数(Ugly Number).求按从小到大的顺序的第 n 个丑数. 思路 详见链接 代码 class Solution:def nthUglyNu ...

  4. [剑指offer]面试题34:丑数

    面试题34:丑数 题目:我们把只包含因子2.3和5的数称作丑数(Ugly Number).求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做第一 ...

  5. 【剑指offer-Java版】34丑数

    丑数:返回第N个丑数 只包含因子 2 3 5的数称为丑数,第一个丑数是 1 采用辅助数组的方法,提高时间效率 – 下一个丑数一定是已有的丑数乘以2 或者 3 或者 5 得到的 public class ...

  6. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)

    题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 思路 详见链接 代码 class Solution:def ...

  7. [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]

    [剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...

  8. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  9. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

最新文章

  1. POJ-2584 T-Shirt Gumbo 最大流
  2. Python-OpenCV 处理视频(五): 运动方向判断
  3. 2021 年 Linux 界的 12 件大事
  4. VC++中文件类型小结
  5. 11.Linux 高性能服务器编程 --- 定时器
  6. tcpdf html 格式重叠,使用TCPDF进行HTML呈现(PHP)
  7. 2020阿里云线上峰会预告
  8. 如何简化卷积神经网络_卷积神经网络:简化
  9. 计算机音乐的制作流程,Premiere制作音乐电子相册的方法和流程 计算机类数媒...
  10. Windows 错误报告
  11. LibreELEC(kodi)基本设置
  12. 【必看文件含发帖规范】2020年黑马程序员社区总版规发布!
  13. Redis通信协议和集群通信算法
  14. 基于知识图谱的知识泛化让AI学会“举一反三”
  15. Java中的自动向量化(SIMD)
  16. Ubuntu云服务器搭建饥荒联机版服务器教程
  17. 神州信息“六合上甲”获2022 DAMA中国数据治理大奖
  18. 【华为云技术分享】敏捷设计,高效协同,凸显设计端云协同价值
  19. json字符串,JSONObject对象,JavaBean对象互转。
  20. 【转载/翻译】HEVC中的CTU、CU、CTB、CB、PB和TB分别是什么

热门文章

  1. 数据结构上机实践第九周项目3 - 利用二叉树遍历思想解决问题
  2. LabView学习笔记(十):条件结构
  3. html 盒子写法,CSS盒子模型
  4. 三位数除以两位数怎么算竖式_苏教版三年级数学上册4.6笔算三位数除以一位数(首位不够除)微课视频 | 练习...
  5. 加密 数字_数字卢布不会具有BTC这样的加密资产的优势
  6. windows下python 自动截图功能
  7. mysql base dir_install_mysql57.sh
  8. linux set命令例子,学习一个 Linux 命令:declare/typeset 命令
  9. java为table添加一行_Js实现Table动态添加一行的小例子
  10. Node JS环境设置– Node.js安装