![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
每天学一点!
时刻保持对知识的热情!
展开
-
不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路 位运算的使用。 参考的代码 class Solution { public: int Add(int num1, int num2) { while (num2 != 0){ int temp = num1 ^ num2; ...原创 2019-04-29 14:56:07 · 96 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路 可以用位运算实现,如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或的结果,所以根据异或的结果中1所在的最低位,把数字分成两半,每一半里都还有只出现一次的数据和成对出现的数据。这样继续对每一半相异或则可以分别求出两个只出现一次的数字。 代码 cl...原创 2019-04-08 18:10:53 · 112 阅读 · 0 评论 -
136. 只出现一次的数字
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 输入: [2,2,1] 输出: 1 思路 位运算。 代码 class Solution { public: int singleNumber(vector<...原创 2019-08-19 18:57:46 · 72 阅读 · 0 评论 -
190. 颠倒二进制位
题目描述 颠倒给定的 32 位无符号整数的二进制位。 示例 输入: 00000010100101000001111010011100 输出: 00111001011110000010100101000000 解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表...原创 2019-08-19 19:13:56 · 111 阅读 · 0 评论 -
191. 位1的个数
题目描述 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数。 示例 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。 思路 只要比较最低位是否为1,然后右移1位。 代码 class ...原创 2019-11-25 15:04:32 · 87 阅读 · 0 评论 -
leetcode231. 2的幂
题目描述 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 示例1: 输入: 1 输出: true 解释: 2(0)= 1 示例 2: 输入: 16 输出: true 解释: 2(4)= 16 思路1 首先小于1的数不符合要求。 然后2的幂,如2(0) = 1 = 1(二进制),2(1) = 2 = 10(二进制),2(2) = 4 = 1...原创 2019-08-20 09:23:57 · 318 阅读 · 0 评论