asp做的静态网站卡不卡,一个网站多个域名备案吗,无锡网站制作哪家强,scc全球电商分发平台题目链接#xff1a;342. 4的幂#xff08;简单#xff09; 算法原理#xff1a; 解法#xff1a;位运算 写法一#xff1a;仅一个1该1在第偶数位 1ms击败35.44% 时间复杂度O(1) 4ⁿ(2)ⁿ#xff0c;因此我们完全可以用A.每日一题——231. 2 的幂的思路来算#xff0c;…题目链接342. 4的幂简单算法原理解法位运算写法一仅一个1该1在第偶数位1ms击败35.44%时间复杂度O(1)4ⁿ(2²)ⁿ因此我们完全可以用A.每日一题——231. 2 的幂的思路来算由于421在二进制中仅仅是多空了一位因此这个1的位置只要在第偶数个位置从0开始计数那么该数就是4的幂找这个位置可以直接找二进制的最高有效位因为这个最高有效位一定为1可以用32Integer.numberOfLeadingZeros()来计算写法二类似A.每日一题——231. 2 的幂写法二n(n-1)1ms击败35.44%时间复杂度O(1)通过写法一可知4的幂中唯一的1在第偶数个位置那么此时4的幂2的幂 且 1在第偶数个位置0x5的二进制0101因此0x5555 55550101 0101 0101 0101 0101 0101 0101 0101共32位所有偶数位从0开始数都是1奇数位都是0我们仅需在此数是2的幂的前提下与0x5555555555按位与只要最终结果0那么该数就是4的幂写法三二项式定理1ms击败35.44%时间复杂度O(1)当 k 为非负整数时根据二项式定理4ᵏ(31)ᵏCₖ⁰3ᵏ1⁰Cₖ¹3ᵏ⁻¹1¹Cₖ²3ᵏ⁻²1²……Cₖᵏ3⁰1ᵏ上式同时%3除最后一项Cₖᵏ3⁰1ᵏ 1外其余每一项都至少包含一个因子3因此这些项%3后均为0因此可得出4ᵏ%31为了能保证此数是2的幂需要两边同时乘以22×4ᵏ%3 2据此在 n 是 2 的幂的前提下我们可以通过n%3的结果判断此时n%31是4的幂(2ᵏ)²4ᵏ此时n%32不是4的幂2ᵏ⁺¹2×4ᵏJava代码class Solution { //写法一仅一个1该1在第偶数位 public boolean isPowerOfFour(int n) { return Integer.bitCount(n)1((32-Integer.numberOfLeadingZeros(n))%21); } }class Solution { //​写法二类似A.每日一题——231. 2 的幂写法二n(n-1) public boolean isPowerOfFour(int n) { return n0((n(n-1))0)(n0x55555555)0; } }class Solution { //写法三二项式定理 public boolean isPowerOfFour(int n) { return n0((n(n-1))0)(n%31); } }