(格雷码)1611. 使整数变为 0 的最少操作次数

2021-08-26  本文已影响0人  来到了没有知识的荒原

1611. 使整数变为 0 的最少操作次数

两种gray转binary的写法,后者简单,前者是纯按gray转binary的描述写的(也不全是,还需要理解一下。。)

class Solution {
 public:
  int minimumOneBitOperations(int gray) {
    if (!gray) return 0;
    int head = 1 << int(log2(gray));
    return head + minimumOneBitOperations((gray ^ head) ^ (head >> 1));
  }
};
class Solution {
public:
    int minimumOneBitOperations(int n) {
        int ans = 0;
        while (n) {
            ans ^= n;
            n >>= 1;    
        } 
        return ans;
    }
};
上一篇下一篇

猜你喜欢

热点阅读