题目分析:
给定一个32位有符号整型数,判断其是否是3的幂次。
解题思路:
方法1
首先,判断整型数是否小于等于0,如果小于等于0,则一定不是3的幂次;
然后,对整型数与3取余,如果余数为0,则将整型数除以3,继续判断,直到整型数不大于1位置。
方法2
递归实现,注意递归结束的条件。
方法3
不利用循环和递归实现,只利用取对数和计算幂次即可判断。
实现程序
// 方法1实现 bool isPowerOfThree1(int n) { if (n <= 0) return false; while (n > 1) { if (n % 3 == 0) n = n / 3; else return false; } return true; } // 方法2实现 bool isPowerOfThree(int n) { if (n <= 0) return false; if (n == 1) return true; else if (n % 3 == 0) return isPowerOfThree(n / 3); else return false; } // 方法3实现 bool isPowerOfThree(int n) { return n > 0 && n == pow(3, round(log(n) / log(3))); }
leetcode_326 Power of Three
最新推荐文章于 2024-08-04 16:25:50 发布