標籤:c++ leetcode
Gray Code
The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:
00 - 001 - 111 - 310 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1] is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
解題思路:
格雷碼,相鄰兩個二進位之間只有一位不同。n位二進位的格雷碼的數目是2^n個,且第i個格雷碼為(i>>1)^i。估計題目有點問題,當n為0時,應該返回{},但是這裡要求返回{0}
class Solution {public: vector<int> grayCode(int n) { vector<int> result; if(n<0){ return result; } int num = 1<<n; for(int i=0; i<num; i++){ result.push_back((i>>1)^i); } return result; }};
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
[LeetCode] Gray Code