編寫乙個程式,找出第 n 個醜數。
醜數就是質因數只包含 2, 3, 5 的正整數。
示例:說明:1 是醜數。n 不超過1690。輸入: n = 10
輸出: 12
解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。
預計算 1690 個醜數:
1.初始化陣列 nums 和三個指標 i2,i3,i5 。
2.迴圈計算所有醜數。每一步:
在 nums[i2] * 2,nums[i3] * 3 和 nums[i5] * 5 選出最小的數字新增到陣列 nums 中。
將該數字對應的因子指標向前移動一步。
3.在陣列中返回所需的醜數。
class ugly:
def __init__(self):
self.nums = nums = [1, ]
i2 = i3 = i5 = 0
for i in range(1, 1690):
ugly = min(nums[i2] * 2, nums[i3] * 3, nums[i5] * 5)
if ugly == nums[i2] * 2:
i2 += 1
if ugly == nums[i3] * 3:
i3 += 1
if ugly == nums[i5] * 5:
i5 += 1
class solution:
u = ugly()
def nthuglynumber(self, n):
return self.u.nums[n - 1]
醜數II,LeetCode264,三指標法
題目描述 編寫乙個程式,找出第 n 個醜數。醜數就是質因數只包含 2,3,5 的正整數。示例 輸入 n 10 輸出 12 解釋 1,2,3,4,5,6,8,9,10,12 是前 10 個醜數。說明 1 是醜數。n 不超過1690。解題思路 醜數的質因數中只包含2,3,5,所以1之後的醜數一定是2或3...
LeetCode75 顏色分類(三指標法)
給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。示例 1 輸入 nums 2,0,2,1,1,0 輸出 0,0,1,1,2,2 示例 2 輸入 nums ...
leetcode三數之和 雙指標法
題目 給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 解 這道題一開...