三指標法,LeetCode 264 醜數 II

2021-10-14 11:39:33 字數 1029 閱讀 9954

編寫乙個程式,找出第 n 個醜數。

醜數就是質因數只包含 2, 3, 5 的正整數。

示例:

輸入: n = 10

輸出: 12

解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。

說明:1 是醜數。n 不超過1690。

預計算 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 解 這道題一開...