位运算
文章平均质量分 85
使用位运算简化操作,更好理解运算原理
呦柚子
这个作者很懒,什么都没留下…
展开
-
leetcode — 137. 只出现一次的数字 II(1+3)
(剑指 Offer II 004. 只出现一次的数字)给你一个整数数组nums,除某个元素仅出现一次外,其余每个元素都恰出现三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,100]输出:100提示:1 <= nums.length <= 3 * 104 -231<= nums[i] <= 231- 1 nums中,除...原创 2021-08-06 22:23:12 · 197 阅读 · 0 评论 -
leetcode — 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?除了某个元素只出现一次以外,其余每个元素均出现两次。1、线性时间复杂度:要求代码时间复杂度最高为O(n),不能有嵌套循环等。2、不使用额外空间:要求空间复杂度最高为O(1)。示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4方法一:最直接的方..原创 2021-07-30 14:27:48 · 337 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000...原创 2021-07-30 17:13:30 · 108 阅读 · 0 评论 -
leetcode — 190. 颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数-3,输出表示有符号整数-1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例 1:输入: 0000...原创 2021-07-28 20:41:00 · 235 阅读 · 2 评论 -
leetcode — 面试题 16.01. 交换数字
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2 -2147483647 <= numbers[i] <=2147483647不使用临时变量交换已有两个数字:加法、异或。1、加法操作...原创 2021-07-28 16:05:17 · 239 阅读 · 0 评论 -
leetcode — 191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在示例 3中,输入表示有符号整数-3。示例 1:输入:000000000000000000..转载 2021-07-23 16:20:06 · 126 阅读 · 0 评论 -
leetcode — 461. 汉明距离 Hamming Distance
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给定两个整数x和y,计算并返回它们之间的汉明距离。示例 1:输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。示例 2:输入:x = 3, y = 1输出:1提示:0 <=x, y <= 2^31...原创 2021-07-24 15:31:44 · 588 阅读 · 2 评论 -
leetcode — 338. 比特位计数
给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的...原创 2021-07-23 22:37:03 · 281 阅读 · 0 评论 -
leetcode — 231. 2的幂
给一个整数n,请判断该整数是否是 2 的幂次方。如果是,返回true;否则,返回false。如果存在一个整数x使得,则认为n是 2 的幂次方。示例 1:输入:n = 1输出:true解释:20 = 1示例 2:输入:n = 16输出:true解释:24 = 16示例 3:输入:n = 3输出:false示例 4:输入:n = 4输出:true示例 5:输入:n = 5输出:false提示:进阶:你能...原创 2021-07-23 20:38:14 · 150 阅读 · 0 评论 -
leetcode — 201. 数字范围按位与
给定两个整数left和right,表示区间[left, right],返回此区间内所有数字按位与的结果(包含left、right端点)。—— 注意超时以及其中简化计算的规律示例 1:输入:left = 5, right = 7输出:4示例 2:输入:left = 0, right = 0输出:0示例 3:输入:left = 1, right = 2147483647输出:0提示:0 <= left <= ri...原创 2021-07-24 11:45:54 · 336 阅读 · 0 评论