0
点赞
收藏
分享

微信扫一扫

【LeetCode】264.丑数II


1. 题目

【LeetCode】264.丑数II_算法

2. 分析

三指针解决这道题
分别针对2,3,5这三个搞几个指针,然后判断各个的乘积大小,依次加入最小的值。需要注意的是,如果生成的值有相等的话,那么就跳到下一次遍历。
因为这种迭代的遍历,不会遗漏数据,是可行的。

3. 代码

class Solution:
def nthUglyNumber(self, n: int) -> int:
idx2,idx3,idx5 = 0,0,0
print(idx2,idx3,idx5)
nums= [1]
cnt = 1 # 记录生成的个数
while(cnt <= n):
num_2 = 2 * nums[idx2]
num_3 = 3 * nums[idx3]
num_5 = 5 * nums[idx5]
min_val = min(num_2,num_3,num_5)
if min_val == num_2:
if min_val <= nums[-1]: # 如果最小值找不到
idx2+=1
continue
nums.append(num_2)
idx2+=1
elif min_val == num_3:
if min_val <= nums[-1]:
idx3+=1
continue
nums.append(num_3)
idx3+=1
else:
if min_val <= nums[-1]:
idx5+=1
continue
nums.append(num_5)
idx5 += 1
cnt += 1
return nums[n-1]
print(nums)
# print(nums[-1])


举报

相关推荐

0 条评论