![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
位运算
444
Haha@25
300字以内
展开
-
338. 比特位计数(位运算) (动态规划(不懂))
方法一:时间复杂度 o(n^2)利用Integer.toBinaryString(i);class Solution { public int[] countBits(int num) { int[] res = new int[num+1]; for(int i = 0;i<=num;i++){ String bi...原创 2020-02-06 11:14:18 · 146 阅读 · 0 评论 -
318. 最大单词长度乘积(位运算)
方法:用二进制的一位表示某一个字母是否出现过,0表示没出现,1表示出现。"abcd"二进制表示00000000 00000000 00000000 00001111、"bc"二进制表示00000000 00000000 00000000 00000110。当两个字符串没有相同的字母时,二进制数与的结果为0。注意:数组的长度 words.lengthString的长度 words[i].l...原创 2020-02-06 10:44:59 · 146 阅读 · 0 评论 -
371. 两整数之和(位运算)
a^b //得到不带进位的两数和(a&b)<<1//获得进位值例: 5+7 = 2+10 = 8 + 4 = 12 + 0 = 12class Solution { public int getSum(int a, int b) { int tmp; while(b!=0){ tmp = a^b;//获得不...原创 2020-02-06 09:58:01 · 122 阅读 · 0 评论 -
476. 数字的补数(位运算)(方法二不懂)
方法一:使用异或运算例如 5(101) 补数(010)22 = 5^7010 = 101^111所以只需再原数的基础上构造出一个长度相同的全一数,在进行异或操作 //构造一个和num二进制表示位数相同的全一2进制数 while(tmp>0){ AllOne = AllOne<<1; tmp = tmp&...原创 2020-02-05 23:15:08 · 156 阅读 · 0 评论 -
693. 交替位二进制数(位运算)
方法一:获得n的最低位,将n右移一位,如果出现此时n的最低位和获得的最低位相同则返回false;class Solution { public boolean hasAlternatingBits(int n) { while(n>0){ int a = n%2; n = n>>1; ...原创 2020-02-05 22:45:26 · 119 阅读 · 0 评论 -
342. 4的幂(位运算)(看方法四)
方法一:class Solution { public boolean isPowerOfFour(int num) { if(num == 0) return false; while(num%4 == 0){ num = num>>2; } return num ==1; }}方...原创 2020-02-05 11:50:27 · 89 阅读 · 0 评论 -
231. 2的幂(位运算)(x & (-x)) (x & (x - 1))
方法一:利用性质:2的幂次的2进制表示中只有一个1;class Solution { public boolean isPowerOfTwo(int n) { if(n == 0) return false; while(n%2==0){ n = n >>1; } return n==1...原创 2020-02-05 11:24:01 · 137 阅读 · 0 评论 -
190. 颠倒二进制位(位运算)(看方法三)
方法一:用移位操作关键操作:res = res | n&1;//将 n 的 最低位插入到res的最右端public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int res = 0,cnt = 32; ...原创 2020-02-05 10:42:44 · 218 阅读 · 0 评论 -
260. 只出现一次的数字 III(位运算)(回看方法三方法四)
方法一:哈希class Solution { public int[] singleNumber(int[] nums) { Map<Integer,Integer> map = new HashMap<>(); for(int i : nums){ if(map.containsKey(i)) map....原创 2020-02-05 00:48:04 · 150 阅读 · 0 评论 -
268. 缺失数字(待补充)
方法一:用一个辅助数组记录0-n的出现情况class Solution { public int missingNumber(int[] nums) { int[] auxNums = new int[nums.length+1]; for(int i =0;i<nums.length;i++){ auxNums[nums...原创 2020-02-04 12:34:51 · 99 阅读 · 0 评论 -
136. 只出现一次的数字(位运算)
方法一:利用位运算的性质:利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数。例如:2,1,22^1 = 3,3^2 = 1class Solution { public int singleNumber(int[] nums) { int res = nums[0]; for(int i = 1;i<num...原创 2020-02-04 11:18:37 · 131 阅读 · 0 评论 -
461. 汉明距离(位运算)
方法一:使用 Integerl.toBinaryString();class Solution { public int hammingDistance(int x, int y) { int c = x^y,cnt = 0; String res = Integer.toBinaryString(c); System.out.prin...原创 2020-02-04 10:22:34 · 117 阅读 · 0 评论