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