
位运算
帅过地球一半的男人
至少帅过地球一半的男人
展开
-
342. 4的幂
1.链接:力扣传送门2.思路:法一: 求4的幂,可转换为求2的幂,只不过后者求的是二进制数只有一位为1的数,32位中,每一位都可作为2的幂。对于前者,是奇数位可作为4的幂, 即1 3 5 7... 我们可以先求2的幂,然后遍历奇数位上是否出现1,若出现1,则为true,反之为falseclass Solution { public boolean isPowerOfFour(int n) { if(n<=0 || (n & n-1).原创 2021-08-20 10:56:54 · 91 阅读 · 0 评论 -
190. 颠倒二进制位
链接:力扣传送门思路:遍历某个数的二进制,并将各个位依次填充到数字0中(与、异或和移位)1.遍历指移位,移动32次即可遍历完一个整数n,2.填充是通过每次移位前进行n & 1,从而判断出最后一位是1还是0, 若是0,则直接对结果ans左移,因为左移补零 若为1,则通过ans^1进行位填充。public class Solution { public int reverseBits1(int n) { int ans = 0; int .原创 2021-08-17 17:08:30 · 91 阅读 · 0 评论 -
231. 2 的幂
链接:力扣传送门思路:遍历某个数的二进制,并将各个位依次填充到数字0中(与、异或和移位)1.遍历通过移位实现,移动32次即可遍历完一个整数n,2.填充是通过每次移位前进行n & 1,从而判断最后一位是1还是0, 若是0,则直接对结果ans左移,因为左移补零 若为1,则通过ans^1进行位填充。public class Solution { public int reverseBits1(int n) { int ans = 0; int i =..原创 2021-08-17 10:41:57 · 94 阅读 · 0 评论 -
268. 丢失的数字
链接:力扣传送门思路:异或运算由于数组的长度为数字范围的最大值,于是可以构造出包含缺失值的数组[0,nums.length]。而数组nums不包含缺失值,也就是说这两个数组存在的唯一一个不同的数,其它都是两两相同,根据该特性可利用异或运算得出缺失值异或运算: 2^2=0(去掉重复) 0^任何数=任何数(不变)class Solution { //快排,遍历一遍,数组值不等于下标值则为丢失的数字 public int missingNumber1(int[] nums) {..原创 2021-08-07 18:44:24 · 98 阅读 · 0 评论 -
136. 只出现一次的数字
链接:力扣传送门思路:异或运算7^7=0(去重)7^0=0(不变)class Solution { public int singleNumber(int[] nums) { //1.HashMap 两次for //2.使用异或运算,结果即为唯一的那个数字 2^2=0 0^任何数=任何数(不变) int ans = 0; for(int num : nums) { ans = n..原创 2021-08-05 12:19:09 · 93 阅读 · 0 评论