首页 > 其他分享 >LeetCode 263[丑数]

LeetCode 263[丑数]

时间:2024-12-07 10:43:11浏览次数:9  
标签:丑数 false isBool 263 循环 整除 true LeetCode

题目

链接

LeetCode 263[丑数]

详情

实例

提示

题解

思考

题目对丑数的定义:只包含质因数2、3、5的正整数

条件一:只包含质因数2、3、5

条件二:正整数

 

对于条件二很好筛选:如果给定值 n 小于 1 ,即给定值为 0 或者是负数,此时条件二不满足,则返回 false

该部分的代码实现如下:

        if (n < 1)//0或负数则不是丑数,直接返回
            return false;

 

对于条件一的筛选,此处我是选择循环整除,即在一次循环内判断能否被2、3、5至少一个整除:

由于在进行条件二的筛选后,n 的值限定在 >= 1 内

此处我采用的是 while 循环,循环进行的条件是 n > 1,故当 n == 1时, 退出循环

该部分代码实现如下:

        while (n > 1)//如果是丑数,则最后可以整除,整除完毕最后 n 为 1,则退出循环返回true
        {
            ...
        }

循环体:

首先定义了一个布偶型变量 isBool 来记录该数在此轮循环内是否可能为丑数,默认值为 false,

该部分代码实现如下:

            bool isBool = false;//初始值为false,默认不是丑数

判断能否被5整除,如果能被5整除则,可能是丑数,此时 isBool 应该为 true

该部分代码实现如下:

            if ((0 == (n % 10)) || (5 == (n % 10)))
            {
                n = n / 5;
                isBool = true;//能被5整除,则可能是丑数
            }

判断能否被2整除,如果能被2整除,可能是丑数,此时 isBool 应该为 true

该部分代码实现如下:

            if (0 == (n % 2))
            {
                n = n / 2;
                isBool = true;//能被2整除,则可能是丑数
            }

判断能否被3整除,如果能被3整除,可能是丑数,此时 isBool 应该为 true

该部分代码实现如下:

            if (0 == (n % 3))
            {
                n = n / 3;
                isBool = true;//能被3整除,则可能是丑数
            }

如果,既不能被2整除,也不能被3整除,还不能被5整除,则以上分支都进不去,则 isBool 依旧是 false,此时,这个数就一定不是丑数了,则直接返回 false

该部分代码实现如下:

            //既不能被5整除,也不能被2整除,还不能被3整除,则不是丑数,直接返回
            if (!isBool)
                return false;

如果,能被2、3、5至少一个整除,则可能是丑数,继续下一次循环

如果该数是丑数,则一直能被2、3、5至少一个整除,则最后 n 为 1 ,退出循环,返回 true

代码

标签:丑数,false,isBool,263,循环,整除,true,LeetCode
From: https://www.cnblogs.com/EricsT/p/18591882

相关文章

  • leetcode3288 最长上升路径的长度
    给定长度为n的二维数组{x[i],y[i]}和一个整数k,其中0<=k<n,从中选中若干个点排序构成序列,求最长的点序列满足x[i]<x[i+1]并且y[i]<y[i+1],要求第k个点必须选择,返回最长序列的长度。1<=n<=1E5;0<=x[i],y[i]<=1E9;各个点互不相同分析:可以拆分成如下几个子任务:(1)求一维数组的lis的长度......
  • leetcode-1193. 每月交易 I
     建表语句:CreatetableIfNotExistsTransactions(idint,countryvarchar(4),stateenum('approved','declined'),amountint,trans_datedate)TruncatetableTransactionsinsertintoTransactions(id,country,state,amount,trans_date)......
  • leetcode 3266. K 次乘运算后的最终数组 II
    3266.K次乘运算后的最终数组II给你一个整数数组 nums ,一个整数 k  和一个整数 multiplier 。你需要对 nums 执行 k 次操作,每次操作中:找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最 前面 的一个。将 x 替换为 x*multiplier 。k 次操作以......
  • leetcode 3. 无重复字符的最长子串
    3.无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 滑动窗口模板//外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){//当前考虑的元素while(l<=r&&check()){//区间[left,right]不符......
  • leetcode第4题 如何求出两个有序数组的中位数
    leetcode原题大意,给定两个升序排列的有序数组,例如nums1=[1,2],nums2=[3,4]那么,这两个有序数组的所有数字的中位数为(2+3)/2=1.5,现在要求以O(log(m+n))的时间复杂度。funcfindMedianSortedArrays(nums1[]int,nums2[]int)float64{ length:=len(nums1)+len(nums2) ......
  • 2024/12/6 【哈希表】LeetCode1.两数之和 【√】
    解法1:暴力解法classSolution:deftwoSum(self,nums:List[int],target:int)->List[int]:foriinrange(len(nums)):des=target-nums[i]ifdesinnums:forjinrange(len(nums)):......
  • LeetCode LCR072[x的平方根]
    题目链接LeetCodeLCR072[x的平方根]详情实例提示题解思路一[暴力法]由于所求的是整型且是正符号整型,可以采取循环遍历的方式来求取平方根用for循环将i由0开始遍历循环体:求i的平方值当平方值小于指定值,此时循环继续退出循环的条件:当平方值为指定值时,返回......
  • leetcode 2056. 棋盘上有效移动组合的数目
    classSolution{private:  vector<vector<int>>RMove={{1,0},{-1,0},{0,1},{0,-1}};  vector<vector<int>>BMove={{1,1},{-1,-1},{-1,1},{1,-1}};public:  boolCheckMove(intsx,intsy,intx,inty,intstep,vector<vector......
  • leetcode2836 在传球游戏中最大化函数值
    n名玩家在玩传球游戏,编号为i的玩家固定会把球传给编号为r[i]的玩家,任选一名玩家开始传球,恰好传k次,得分为这k次传球内所有接触过球的玩家的编号之和,如果玩家多次触球,则累加多次。问从哪个玩家开始传,能获得最大总得分,求最大得分。1<=n<=1E5;0<=r[i]<n;1<=k<=1E10分析:与倍增法求l......
  • LeetCode102 二叉树的层序遍历
    LeetCode102二叉树的层序遍历题目链接:LeetCode102描述给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。示例输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]思路方法一:迭代方式--借助队列方法二:递归方式代码方法......