首页 > 其他分享 >剑指 Offer 49. 丑数

剑指 Offer 49. 丑数

时间:2023-09-08 10:22:10浏览次数:42  
标签:丑数 题目 Offer int 49 dp

题目链接: 剑指 Offer 49. 丑数

题目描述:

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

解法思路:

代码:

// dp[i] 代表第 i 个丑数
// 维护三个索引,不断乘 2 3 5,谁小当前 dp[i] 选谁
func nthUglyNumber(n int) int {
    
    i2, i3, i5 := 1, 1, 1
    dp := make([]int,n+1)
    dp[1] = 1
    for i := 2 ;i <= n ;i++{
        v2,v3,v5 := dp[i2]*2,dp[i3]*3,dp[i5]*5
        dp[i] = min(v2,min(v3,v5))
        if dp[i] == v2 {
            i2++
        }
        if dp[i] == v3 {
            i3++
        }
        if dp[i] == v5 {
            i5++
        }
    }
    return dp[n] 

}
func min(a,b int)int{
    if a < b {
        return a
    }
    return b
}

标签:丑数,题目,Offer,int,49,dp
From: https://www.cnblogs.com/lxing-go/p/17686806.html

相关文章

  • 剑指Offer 48. 最长不含重复字符的子字符串
    题目链接:剑指Offer48.最长不含重复字符的子字符串题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。解法思路:代码:funclengthOfLongestSubstring(sstring)int{varresintifs==""{returnres}//......
  • 剑指 Offer 60. n个骰子的点数
    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第i个元素代表这n个骰子所能掷出的点数集合中第i小的那个的概率。 示例1:输入:1输出:[0.16667,0.16667,0.16667,0.16667,0.16667,0.16667......
  • 剑指 Offer 60. n个骰子的点数
    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第i个元素代表这n个骰子所能掷出的点数集合中第i小的那个的概率。 示例1:输入:1输出:[0.16667,0.16667,0.16667,0.16667,0.16667,0.16667......
  • 剑指 Offer 22. 链表中倒数第k个节点
    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表:1->2->3->4->5,和k=......
  • 剑指 Offer 46. 把数字翻译成字符串
    题目链接:剑指Offer46.把数字翻译成字符串题目描述:解法思路:代码://dp[i]=dp[i-1]+dp[i-2]//dp[i]表示长度为i的数字,翻译成字符串有多少种functranslateNum(numint)int{s:=strconv.Itoa(num)n:=len(s)dp:=make([]int,n+1)dp[0]=1......
  • 剑指Offer
    题目链接:题目描述:解法思路:代码:funcfindNthDigit(nint)int{//1、确定是几位数(-10-90-900-9000等)//2、确定是几位数的第几位数(求第n位数是属于哪一个数的)//3、确定是属于那个数的第几位digit,digitNum,count:=1,1,9//digit表示是几位数;dig......
  • 剑指Offer 43. 1~n 整数中 1 出现的次数
    题目链接:剑指Offer43.1~n整数中1出现的次数题目描述:解法思路:代码:funccountDigitOne(nint)int{ //思路 ifn==0{ return0 } //求出该数的各个位上的数字,保存到nums中 varnums[]int tmp:=n fortmp!=0{ a:=tmp%10 nums=append(nums,a)......
  • 08:49:45,218 WARN JDBCExceptionReporter:71 - SQL Error: 156, SQLState: S1000 关
    昨晚运行以前的一个项目,在初始化数据的时候报:08:49:45,218 WARNJDBCExceptionReporter:71-SQLError:156,SQLState:S100008:49:45,218ERRORJDBCExceptionReporter:72-关键字'user'附近有语法错误。org.hibernate.exception.GenericJDBCException:couldnotexecute......
  • 剑指 Offer 57 - II. 和为s的连续正数序列
    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例1:输入:target=9输出:[[2,3,4],[4,5]]示例2:输入:target=15输出:[[1,2,3,4,5],[4,5,6],[7,8]]classSolution{publici......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列
    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:truec......