264. Ugly Number II
Write a program to find the n
-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
is the sequence of the first 10
ugly numbers.
Note that 1
is typically treated as an ugly number, and n does not exceed 1690.
题目含义:这道题是 26. Ugly Number的扩展,要求我们找到第n个丑数
思路:
-
申请一个长度为n的数组uglyNumbers,用于从小到大顺序存储n个丑数,数组中的首项为1,即第一个丑数为1
-
设置三个变量idx2、idx3、idx5存储下标,初始值都为1
-
找出数组uglyNumbers[idx2]*2、uglyNumbers[idx3]*3、uglyNumbers[idx5]*5的最小值,最小值即为下一个丑数,同时更新最小值对应的下标,如果多个数字同时为最小值,则它们的下标都要更新
-
找到第n个丑数时,循环结束
public int GetUglyNumber_Solution(int index) { if(index<=6) return index; int[] dp = new int[index]; dp[0] = 1; int position2 = 0, position3 = 0, position5 = 0; for (int i = 1; i < index; i++) { dp[i] = Math.min(dp[position2] * 2, Math.min(dp[position3] * 3, dp[position5] * 5)); if (dp[i] == dp[position2] * 2) position2++; if (dp[i] == dp[position3] * 3) position3++; if (dp[i] == dp[position5] * 5) position5++; } return dp[index - 1]; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!