leetcode_231题——Power of Two (位运算)

Power of Two

Total Accepted: 11027 Total Submissions: 36750My Submissions

Question Solution

Given an integer, write a function to determine if it is a power of two.

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

Hide Tags

Math Bit Manipulation

Hide Similar Problems

(E) Number of 1 Bits

Have you met this question in a real interview?

Yes

No

Discuss

这道题是计算一个数是否是2的次方数,其实可以转化为计算这个数的二进制位上有多少个1,就可以了,儿这个可以采用位运算的方法,即用一个数n和n-1位与运算,就可以去掉一个1了,

在这里需要注意的是负数一定不是2的次方。

#include<iostream>
using namespace std;

bool isPowerOfTwo(int n) {
	if(n<0)
		return 0;
	int re=0;
	while(n)
	{
		re++;
		n=n&(n-1);
	}
	if(re==1)
		return 1;
	else
		return 0;
}
int main()
{
	cout<<isPowerOfTwo(6)<<endl;
}

  

时间: 2024-11-09 06:55:59

leetcode_231题——Power of Two (位运算)的相关文章

leetCode 342. Power of Four 位运算

342. Power of Four Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example:Given num = 16, return true. Given num = 5, return false. Follow up: Could you solve it without loops/recursion? 题目大意: 判断一个数是否为4的幂. 思路

LeetCode刷题总结-双指针、位运算和分治法篇

本文总结LeetCode上有关双指针.位运算和分治法的算法题,推荐刷题总数14道.具体考点分析如下图: 一.双指针 1.字符串和数组问题 题号:424. 替换后的最长重复字符,难度中等 题号:828. 独特字符串,难度困难 题号:923. 三数之和的多种可能,难度中等 2.实际场景应用问题 题号:826. 安排工作以达到最大收益,难度中等 3.元素对问题 题号:986. 区间列表的交集,难度中等 二.位运算 1.字符串和数组问题 题号:137. 只出现一次的数字 II,难度中等 题号:318.

【NOIP模拟题】“与”(位运算)

因为是与运算,所以我们可以贪心地每次找最高位的,将他们加入到新的序列中,然后每一次在这个新的序列继续找下一个位. 然后最后序列中任意两个的与运算的值都是一样的且是最大的. #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #include <queue&g

342. Power of Four【位运算】

2017/3/23 22:23:57 Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example:Given num = 16, return true. Given num = 5, return false. Follow up: Could you solve it without loops/recursion? 思路:题目要求不能循环或递归,这里采用位运

关于位运算的水题

找数字2 Time Limit: 25000ms, Special Time Limit:50000ms, Memory Limit:32768KB Total submit users: 92, Accepted users: 67 Problem 11466 : No special judgement Problem description 给定2n+1个数字,只有一个数字出现了奇数次,其余的数字都出现了偶数次,现在你需要找出出现奇数次的数字. Input 包含多组数据,每组数据第一行为一

bzoj5108 [CodePlus2017]可做题 位运算dp+离散

[CodePlus2017]可做题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 87  Solved: 63[Submit][Status][Discuss] Description qmqmqm希望给sublinekelzrip出一道可做题.于是他想到了这么一道题目:给一个长度为n的非负整数序列ai,你需 要计算其异或前缀和bi,满足条件b1=a1,bi=bi?1 xor ai(i≥2).但是由于数据生成器出现了问题,他生成的序列a 的长度特

数学,位运算,典型题

数学,自然想到组合数,逆元,阶乘 先来一发组合数相关, #define MAXN 200001 const int mod=1000000007; typedef long long ll; int n,m,r,c; ll ans,s; ll inv[MAXN],fac[MAXN],dev[MAXN]; //inv[]逆元,fac[]阶乘,dev[]阶乘的逆元 void chuli(int x) { inv[1]=1; fac[1]=1; dev[1]=1; fac[0]=1; dev[0]=1

HDU1196_Lowest Bit【位运算】【水题】

Lowest Bit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8043    Accepted Submission(s): 5920 Problem Description Given an positive integer A (1 <= A <= 100), output the lowest bit of A. For

刷题向》一道关于位运算的神题(BZOJ3668)(HARD)

个人觉得这道题对于位运算的加深理解很有意义 根据题目所说,我们要求出一个在给定范围里的自变量,使得最终结果最大. 那么因为这道题是针对于位运算的,所以可以想到用对于位运算取极限情况,即对于"0"和"(2^bit)-1"这两种情况判断,然后即可以得到每一位在这几种操作之后的所有情况,然后根据合适的情况反推得到满足条件的最优解,然后就能A啦 直接甩题目&代码 Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后