
二进制
加油开心
你好呀
展开
-
leetcode:二叉树寻路
这个题要求某个数位于区间的最大值和最小值,从而求出他的对称值。这样的话我们很容易得到11位于16和8之间。然后求11的对陈数就是15-11+8=12。比如对于11这个数,他的二进制是1011。和二叉树关系说有有一点,说没有也没有。我们现在想取其二进制最高位1怎么办?这个题思路还是可以想到的。学到一个二进制新方法。原创 2024-09-26 15:39:45 · 249 阅读 · 0 评论 -
leetcode:二进制表示中质数个计算置位
因为right最大是10的6次方,相当于2的20次方。然后依次判断该数组每一个数是不是素数,用哈希表判断。新建一个数组,存求出的每一位的二进制1的个数。第二种写法,感觉非常巧妙,但也很简单。官方的第一种写法和你一样的。提前存好了20以内的素数。原创 2024-08-05 13:46:59 · 209 阅读 · 0 评论 -
leetcode:交替位二进制数
比如5这个数,二进制是101,问题是他是32位的啊。这题思路什么的纸上画一画是可以想出来的。前面都是0,肯定不可能是true的。还有暴力方法,就是逐位判断即可。这题我感觉出的有问题。原创 2024-08-05 12:45:59 · 205 阅读 · 0 评论 -
leetcode:汉明距离
当然这题还可以用java给的api做,Integer.bitcount。再套用之前写的求整数二进制1的个数代码。你也可以用暴力点的,一位位判断,都可以。异或是相同为0,不同为1。原创 2024-08-05 11:31:13 · 187 阅读 · 0 评论 -
leetcode:二进制手表
两个for循环,外面层表示上面数字,内部for循环表示下面数字。bitcount是新学的api,统计数字里二进制1的个数。这题啊,你看数字都有规律,8,4,2,1不就是二进制吗。如果8亮了,2亮了,表示数字10,不就是1010吗。源代码流失了,就过程很繁琐。我用的是回溯,感觉很难做。这题当时废了我好长时间。想到这里应该就可以了。原创 2024-08-04 18:48:58 · 134 阅读 · 0 评论 -
leetcode:比特位计数
下面这种方法是最好理解的,不断与自己减1,判断是否为0从而统计1的个数。如果i是偶数,那么i中1的个数和i/2中1的个数相等的。如果i是奇数,那么i的1的个数比i/2中1的个数多1。因为i&(i-1)是将i的最右边1去掉。也就是说i比i&(i-1)多一个1。这题就是剑指offer上的原题。这个的时间复杂度就大大降低了。for循环里只有一句。原创 2024-08-01 15:19:42 · 188 阅读 · 0 评论 -
leetcode:2的幂
一个数 n 是 2 的幂,当且仅当 n 是正整数,并且 n 的二进制表示中仅包含 1 个 1。所以我们把这就有一个1删除,剩下判断是不是0,如果是0,表示是2的幂。n=01100010 减去1=01100001。与运算0110 0000,确实删去了最后一个1。n & (n - 1),这是把最后一个1删去。为啥能删去最后一个1?原创 2024-08-01 14:44:51 · 145 阅读 · 0 评论 -
leetcode:位1的个数
就用该数和该数减1相与,判断是否为0,即可。这道题有个很巧妙的方法。原创 2024-08-01 14:13:26 · 194 阅读 · 0 评论 -
leetcode:颠倒二进制位
输入是个int型,只是内存存的是01码,并不是输入的是0101010这样类似的。这个题是无符号,所以最高位依然存的是数值不是符号。代码lo是0,hi是length-1。比如abcd,先对ab逆序,为ba。你可以对局部逆序,然后拼起来即可。我这里给个字符串逆序的分治法例子。这题你也可以用分治法做。要想对一个字符串逆序。然后对cd逆序为dc。比如对这个字符串逆序。原创 2024-08-01 13:47:33 · 129 阅读 · 0 评论 -
leetcode:Pow(x,n)
当n取值为-2147483648,对其取相反数,已经越过了int最大值。我一开始写的306案例通过305,因为有溢出。所以改了之后要把int改为long就行了。这道题考察的是快速幂运算。原创 2024-07-31 14:00:28 · 224 阅读 · 0 评论 -
leetcode:双模幂运算
res是结果,遇到的2的2次方时候,此时p=0110,那就不执行if里面的。2的13次方按理说是2的8次方,2的4次方,2的2次方,2的0次方。但2的2次方我们不要,就让他存在x中,反正最后结果返回是res。那你怎么知道为啥没有2的2次方,因为1和4中间刚好缺个2次方。因为根据二进制看出来,2次方那一位是0,所以没有。13的二进制是1101,所以2的13次方等于。先讲快速幂,要计算2的13次方咋计算?2的8次方×2的4次方×2的0次方。我感觉上述还更好理解些。这道题当时给我整蒙了。他牵扯两个数学知识点。原创 2024-07-31 13:17:58 · 170 阅读 · 0 评论 -
leetcode:二进制求和
短的那一位直接变0即可,因为0不影响相加结果。官方题解就是把二进制数转化为十进制数,相加。比如110+1,可以看成110+001。在把和重新转换为二进制数。如果一个短一个长咋办?原创 2024-07-17 13:29:20 · 146 阅读 · 0 评论 -
leetcode:严格回文的数字
任何数字n的n-2进制都不是回文数。所以直接返回false即可。比如5的3进制,等于12。7的5进制,等于12。原创 2024-07-03 16:03:16 · 205 阅读 · 0 评论