位运算
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
Gray Code
仔细观察格雷码当n=1时10当n=2时00011110当n=3时000001011010110111101100可以发现,n的格雷码,就是n-1的格雷码,再加上它们的逆序前面多一个1两种做法。public class Solution { public List grayCode(int n) { L原创 2016-06-24 20:01:00 · 204 阅读 · 0 评论 -
Power of Four
这个不错,红红火火恍恍惚惚哼哼哈嘿public class Solution { public boolean isPowerOfFour(int num) { int count1 = 0; int count0 = 0; while (num > 0) { count1 += num & 1;原创 2016-07-24 15:09:44 · 199 阅读 · 0 评论 -
Maximum Product of Word Lengths
一道位操作的好题。当中的两个操作很好。public class Solution { public int maxProduct(String[] words) { if (words == null || words.length == 0) { return 0; } int[] elements = ne原创 2016-07-25 18:06:23 · 237 阅读 · 0 评论 -
Counting Bits
先贴出一种自己马上写出的,更好的做法之后补上 public int[] countBits(int num) { if (num == 0) { return new int[]{0}; } int[] res = new int[num + 1]; for (int i = 1; i <= num;原创 2016-07-26 16:35:41 · 196 阅读 · 0 评论 -
Number of 1 Bits
count = count + n&1;是错误的public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int count = 0; while (n != 0) { coun原创 2016-07-17 05:34:19 · 197 阅读 · 0 评论 -
Divide Two Integers
理解num=a_0*2^0+a_1*2^1+a_2*2^2+...+a_n*2^n这个我们就得使用位运算。我们知道任何一个整数可以表示成以2的幂为底的一组基的线性组合,即num=a_0*2^0+a_1*2^1+a_2*2^2+…+a_n*2^n。基于以上这个公式以及左移一位相当于乘以2,我们先让除数左移直到大于被除数之前得到一个最大的基。然后接下来我们每次尝试减去这个基,如果可以则原创 2016-07-18 02:57:02 · 230 阅读 · 0 评论