第一题:
题目描述:
颠倒给定的 32 位无符号整数的二进制位。
提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。
来源:力扣(LeetCode)
链接:力扣
var reverseBits = function(n) {
let ret = 0;
for (let i = 0; i < 32; i++) {
ret <<= 1;
ret = ret + (n & 1);
n >>= 1;
}
return ret>>>0;
}
第二题:
题目描述:
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
来源:力扣(LeetCode)
链接:力扣
var singleNumber = function(nums) {
let index = 0;
for(const num of nums) {
// 按位异或赋值: ^=
index ^= num;
}
return index;
};