题目描述:
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
链接: https://leetcode-cn.com/problems/ugly-number/.
解题思路:
我觉得这个很像斐波那契数列,我用了递归思想,要判断n是不是丑叔,就要判断n/2、n/3、n/5是不是丑数(不能整除的就不判断了,比如n/2不能整除,就只判断n/3、n/5是不是丑数),这样就递归下去,就完事了。这是自顶向下,自底向上可以省时间。
c++代码:
class Solution {
public:
bool isUgly(int n) {
if(n==2||n==3||n==5||n==1) return true;
if(n==0) return false;
if(n%2==0&&n%3==0&&n%5==0){
return isUgly(n/2)||isUgly(n/3)||isUgly(n/5);
}
else if(n%2==0&&n%3!=0&&n%5==0){
return isUgly(n/2)||isUgly(n/5);
}
else if(n%2==0&&n%3==0&&n%5!=0){
return isUgly(n/2)||isUgly(n/3);
}
else if(n%2!=0&&n%3==0&&n%5==0){
return isUgly(n/3)||isUgly(n/5);
}
else if(n%2!=0&&n%3!=0&&n%5==0){
return isUgly(n/5);
}
else if(n%2!=0&&n%3==0&&n%5!=0){
return isUgly(n/3);
}
else if(n%2==0&&n%3!=0&&n%5!=0){
return isUgly(n/2);
}
else return false;
}
};
本文解析如何使用递归思路解决LeetCode中的丑数问题,通过实例演示如何判断一个整数是否仅包含质因数2、3和5。C++代码展示了判断过程,并解释了自顶向下和自底向上的优化策略。
293

被折叠的 条评论
为什么被折叠?



