[Leetcode] #263#264 Ugly Number I & II

Discription

Write a program to check whether a given number is an ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while14 is not ugly since it includes another prime factor 7.

Note that 1 is typically treated as an ugly number.

Solution

bool isUgly(int num) {
	while (num % 2 == 0 && num)
		num /= 2;
	while (num % 3 == 0 && num)
		num /= 3;
	while (num % 5 == 0 && num)
		num /= 5;
	return num == 1;
}

Discription

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.

Solution

int nthUglyNumber(int n) {
	vector<int> res(n, 1);
	int index2 = 0, index3 = 0, index5 = 0;
	for (int i = 1; i<n; i++) {
		res[i] = min(min(res[index2] * 2, res[index3] * 3), res[index5] * 5);
		if (res[i] == res[index2] * 2) index2++;
		if (res[i] == res[index3] * 3) index3++;
		if (res[i] == res[index5] * 5) index5++;
	}
	return res[n - 1];
}

GitHub-Leetcode: https://github.com/wenwu313/LeetCode

發佈了129 篇原創文章 · 獲贊 52 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章