丑数问题——动态规划、Java

2023-05-16

题目描述

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

这道题使用动态规划是比较易于理解的一种解法。思路如下:

丑数只包含因子2、3、5,那么反过来想,1、2、3、5这几个数组合相乘起来就能得到一个丑数,更进一步,一个丑数乘以2、3、5后可以得到另一个丑数,因此,我们可以通过已经存在的丑数推算出下一个丑数,由于要保证从小到大的序列,我们只需要每次都取最小值即可。

还有一个关键的地方,就是要知道2、3、5使用的次数,以保证不会出现重复的现象。

代码如下:

import java.util.*;
public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index==0) return 0;
        int[] factor={2,3,5};
        int[] ugly=new int[index];//这里其实还可以对空间进行优化
        ugly[0]=1;
        int t2=0,t3=0,t5=0;//记录他们使用过的次数
        for(int i=1;i<index;i++){
            ugly[i]=Math.min(ugly[t2]*factor[0],Math.min(ugly[t3]*factor[1],ugly[t5]*factor[2]));
            if(ugly[i]==ugly[t2]*factor[0])t2++;
            if(ugly[i]==ugly[t3]*factor[1])t3++;
            if(ugly[i]==ugly[t5]*factor[2])t5++;
        }
        return ugly[index-1];
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

丑数问题——动态规划、Java 的相关文章

  • 快速幂取模:求 a^b % N(C++)

    在某些情况下 xff0c 我们需要求模 N 情况下某个数的多次幂 xff0c 例如 xff1a 求多次幂结果的最后几位数 RSA算法的加解密 如果底数或者指数很大 xff0c 直接求幂再取模很容易会出现数据溢出的情况 xff0c 产生错误的
  • 新手教程:手把手教你使用Powershell批量修改文件名

    适合完全没用过 xff0c 没了解过powershell的人 1 打开Windows Powershell ISE 在任务栏搜索框中输入ISE xff0c 然后打开 xff08 我的任务栏放在右边了 xff0c 所以是这个样子 xff09
  • Mac OS 开机密码重置

    通过 Mac OS 恢复功能启动 Apple 芯片 xff1a 将 Mac 开机并继续按住电源按钮 xff0c 直至看到启动选项窗口 选择标有 选项 字样的齿轮图标 xff0c 然后点按 继续 Intel 处理器 xff1a 将 Mac 开
  • 表达式求值:从“加减”到“带括号的加减乘除”的实践过程

    本文乃Siliphen原创 xff0c 转载请注明出处 xff1a http blog csdn net stevenkylelee 为什么想做一个表达式求值的程序 最近有一个需求 xff0c 策划想设置游戏关卡的某些数值 xff0c 这个
  • Linux中source命令,在Android build 中的应用

    source命令 xff1a source命令也称为 点命令 xff0c 也就是一个点符号 xff08 xff09 source命令通常用于重新执行刚修改的初始化文件 xff0c 使之立即生效 xff0c 而不必注销并重新登录 用法 xff
  • Edge 错误代码: STATUS_ACCESS_DENIED 解决方案

    1 到C盘Edge的文件全部删掉 2 到电脑管家的软件管理重新下载Edge 或者 去官网下载 3 再次打开Edge xff0c 功能都回来了 注 xff1a 该解决方案源自于edge吧的四川男篮大佬
  • centos7.9离线安装mysql5.7

    前言 windows server2003服务器 xff0c 安装mysql提示需要net framework xff0c 费了半天劲装好了 xff0c 发现解压版redis无法启动 xff0c 换了个低版本也是无法安装 xff0c 服务器
  • vs2019-slicer编译问题记录

    3D Slicer编译过程问题记录 官网教程 xff1a https slicer readthedocs io en latest developer guide build instructions windows html 环境 CM
  • sudo npm command not found 问题解决

    这种情况通常是使用 npm 命令可以正常使用 xff0c 但使用sudo npm 命令便会报 command not found 这是什么原因呢 xff1f 输入which npm可以得到 usr local bin npm xff0c 这
  • (POJ1201)Intervals <差分约束系统-区间约束>

    Intervals Description You are given n closed integer intervals ai bi and n integers c1 cn Write a program that reads the
  • 【sv与c】sv与c交互

    网上此类文章很多 xff0c 这里暂时不放具体实现和测试结果 xff0c 后续持续更新 下面引用一些帖子 xff0c 帖子中涉及到具体做法 vcs联合编译v sv c 43 43 代码 sxlwzl的专栏 CSDN博客 1 xff0c 假设
  • stm32f103c8t6最小系统

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言stm32f103c8t6构成二 xff1a 电源电路稳压模块注意 复位电路NRST 时钟电路程序下载电路JTAGSWD 启
  • udp中的connect()&bind()

    connect amp bind 的作用 udp udp connect span class hljs preprocessor include lt sys types h gt span span class hljs preproc
  • Linux Hook技术实践

    LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA so里面的函数的 xff0c 结果现在被偷偷换成了执行你的libB so里面的代码 xff0c 是一种替换 为什么hook 恶意代码注入调用常用库函数时打lo
  • Tensorflow Cnn mnist 的一些细节

    Tensorflow cnn MNIST 笔记 写这个完全是记录看官网example时不懂 xff0c 但后来弄懂的一些细节 当然这个可以算是对官方文档的补充 xff0c 也许每个人遇到的不懂都不一样 xff0c 但希望对大家有帮助 先上代
  • effective cpp 读书笔记2

    当你用到多态时 xff0c 务必把析构函数做成虚函数 以前知道子类的析构函数会自动调用父类的析构函数 xff0c 然而今天却发现不总是这样 当你用基类的指针指向派生类时 xff0c 然后delete这个指针时 xff0c 有可能就不会调用派
  • malloc与缺页的一些的时间测量

    malloc与缺页的一些的时间测量 时间函数 span class hljs keyword struct span timespec time t tv sec span class hljs keyword long span span
  • N皇后问题的并行解法

    N皇后问题的并行解法 N皇后问题 其实就是一个n n的棋盘上摆n个皇后 xff0c 任意两个皇后不能同行 xff0c 同列 xff0c 同对角线 xff0c 求出所有的摆法 这个问题可以看做是求n的组合数 比如第一列上的皇后在第x1行 xf
  • apache服务器使用时网页乱码问题

    查看原文 xff1a http www hellonet8 com 440 html 在apache的配置文件httpd conf中 xff0c 或许我们会用到 AddDefaultCharset UTF 8 来设置所有主机或者某虚拟主机的
  • 将群晖NAS变为本地盘

    本文介绍一个工具 xff0c 可以在 Windows 系统下将群晖NAS的目录变为本地盘 xff0c 好处是在外部访问的时候 xff0c 能够大大改善体验 可以用本地的应用程序直接打开 xff0c 速度依赖网络带宽 xff0c 正常情况下

随机推荐

  • Deepin | 修改网卡名 | 配置IP地址 | DHCP

    文章目录 修改网卡名解决方案 xff1a 配置IP地址解决方案 xff1a DHCP自动获取 修改网卡名 解决方案 xff1a 禁用该可预测命名规则 span class token function sudo span vim etc d
  • windows商店直接安装ubuntu子系统

    文章目录 安装报错WslRegisterDistribution failed with error 0x8007019eWSL安装Linux报错WslRegisterDistribution failed with error 0x803
  • 基于VTK的任意平面切割

    这位 小兵 太传奇了 xff0c 先收藏 xff0c 再学习 xff0c http www cnblogs com dawnWind archive 2013 02 17 3D 06 html 先贴码 以后再 切割介绍 对于一个模型的切割需
  • 百度OCR接口使用

    最近在研究ocr识别 也对比了一些的方法 现在来介绍一下 调用百度提供的ocr接口 小量调用的话 是不收费的 1 首先 你要有一个百度账号 如果已经有的话 登录进去会进入到这样一个界面 点击 34 创建应用 34 创建成功后 返回应用列表
  • Python 元组(tuple)剖析详解

    目录 概念元组的常见操作 概念 元组 span class token punctuation span 是一个有序 span class token punctuation span 可重复的集合 特点 span class token
  • Dom型XSS跨站脚本攻击和防御

    在前面的文章中 xff0c 我们讲了持久型XSS和反射型XSS 我个人觉得这些命名真的很贴切 xff0c 反应了概念的本质 无论是持久型XSS还是反射型XSS 恶意的js脚本内容都需要由服务端返回给用户 xff0c 今天我们要说的Dom型X
  • 编译错误导致浪费10多分钟, 编译错误的提示:xxx does not name a type xxx

    最近 xff0c 我在google protobuf 协议文件xxx pb增加了结构体 类 请求字段 xff0c 生成xxx h和xxx cpp文件 xff0c 然后放到对应目录进行编译 xff0c 奇葩的是 xff0c 编译出错 xff0
  • 树莓派上安装php

    简单东西 xff1a sudo apt get install php 然后 xff1a pi 64 raspberrypi taoge cat test php lt php aa 61 60 echo 39 hello 39 39 xx
  • 结构体和数组

    结构体中可以有数组类型的成员 xff0c 数组的元素也可以是结构体 数组和结构体的初始化是一样的 xff0c 都是把各个元素放在一个大括号里 xff0c 各个成员用逗号分隔 结构体数组使用示例 include lt stdio h gt i
  • iOS聊天室 简单的对话聊天界面(cell自适应高度)

    文章目录 难点思路需要用到的方法的大致解析 xff08 只是简单的介绍 xff0c 如果想要仔细理解推荐再去看看别的博客 xff09 GitHub地址代码效果图 难点 因为聊天长度不一样 xff0c 需要设置自适应高度发送信息后 xff0c
  • navicat链接centos7数据库失败Authentication plugin ‘caching_sha2_password‘ cannot be loaded: dlopen(../Frame

    重新配置云上数据库 mysql u root p use mysql select user host plugin authentication string from user G ALTER USER root 64 IDENTIFI
  • C语言中以字符串形式输出枚举变量

    1 枚举应用说明 每个枚举常量对应一个整形数字 xff0c 很多时候可以像整形一样使用 xff1b 但是如果要求打印枚举变量名的字符串 xff0c 办法也有很多 xff0c 查看网上方法几乎都需要转换 xff0c 要么用数组 xff0c 下
  • 定时器初值的计算方法

    定时器初值的计算方法 1 xff1a 定义 用户时间 xff1a Tuser 寄存器位数 xff1a Rn xff08 n 为 8 16 32分别代表 0xFF 0xFFFF 0xFFFFFFFF xff09 初始值 xff1a TCONH
  • iOS开发之NSAttributedString使用

    本文介绍了NSAttributedString和NSMutableAttributedString的简单用法 一 NSAttributedString介绍 摘自NSAttributedString h文件 span class hljs c
  • 阿里云添加安全组规则

    阿里云添加安全组规则 可以 参考 阿里云官方文档 xff1a https help aliyun com document detail 25471 html spm 61 5176 11065259 1996646101 searchcl
  • latex章节引用

    方法 xff1a 在章节后面直接添加 label 即可 xff0c 引用的时候使用 ref 可以是任意字符 参考 xff1a LaTeX 引用章节 公式和图表 Xovee CSDN博客 latex引用图表
  • Python之pip命令指定安装源和版本

    背景 用pip安装依赖包时默认访问 https pypi Python org simple 该路径经常出现不稳定以及访问速度非常慢的情况 xff0c 国内厂商提供的一些pipy镜像可以加快下载速度 xff0c 目前可用的有 xff1a 清
  • 从教程开始学习Rabbitmq

    Rabbitmq 入门概念 首先来介绍下Rabbitmq的一些概念 xff1a Producer xff1a 生产者 xff0c 生产者负责发送信息 xff08 messages xff09 Queue xff1a 队列 xff0c 队列是
  • 要看的书籍或视频——Java后端

    书单 xff1a 算法与数据结构 xff1a 数据结构 xff08 严蔚敏 xff09 大话数据结构 如果觉得教材无聊就可以看大话系列 xff0c 印象中里面还有很多诗 剑指Offer 程序员面试金典 编程珠玑 编程之美 牛客网 43 le
  • 丑数问题——动态规划、Java

    题目描述 把只包含因子2 3和5的数称作丑数 xff08 Ugly Number xff09 例如6 8都是丑数 xff0c 但14不是 xff0c 因为它包含因子7 习惯上我们把1当做是第一个丑数 求按从小到大的顺序的第N个丑数 这道题使