![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
Ealiser
这个作者很懒,什么都没留下…
展开
-
LeetCode第137题 只出现一次的数字II
算法数学核心思想最开始想用桶排序的思路,但是JAVA数组的最长长度是31位,所以作罢。后来采用老办法,统计每个位置1的个数num & 1//确定最后一位是不是1res |= ans[31-i] % m;//复原位置代码class Solution { public int singleNumber(int[] nums) { int[] ans = new int[32]; for(int num:nums){ .原创 2022-04-02 15:31:44 · 1243 阅读 · 0 评论 -
LeetCode第338、191题 比特位计数 位1的个数
算法数学,逻辑与核心思想计算1比特数应该怎么做?Brian Kernighan 算法对于任意整数 xx,令 x=x & (x−1),该运算将 xx 的二进制表示的最后一个 11 变成 00。因此,对 xx 重复该操作,直到 xx 变成 00,则操作次数即为 xx 的「一比特数」。针对第二题,只需要将while条件变为!=0即可while x > 0{int nums = 0;x = x &(x-1);nums++;}代码class Solution .原创 2022-04-01 13:06:09 · 904 阅读 · 0 评论 -
LeetCode第231题 2的幂
算法位运算核心思想两种思路①一种是直接左移,这里需要注意即便使用long型结构保存数据,1的左移32位仍然是负数,因为1是32位保存的数据.②第二种方法为考虑2的倍数的特点,必定是只存在一个2,所以令n与(n-1)进行逻辑与即可。代码class Solution { public boolean isPowerOfTwo(int n) { int x = 0; long temp = 0; while(temp <= n){ .原创 2022-04-01 10:39:52 · 1020 阅读 · 0 评论 -
LeetCode第268题 丢失的数字
算法位运算 --> 异或核心思想异或专注于寻找缺少的数字或者出现一次的数,利用的是异或和。神奇,不知道原理。代码class Solution { public int missingNumber(int[] nums) { int xor = 0; int n = nums.length; for(int i = 0;i<n;i++){ xor ^= nums[i]; } .原创 2022-03-31 14:40:07 · 659 阅读 · 0 评论