LeetCode 89格雷編碼

2021-09-24 05:18:36 字數 1367 閱讀 6383

題目描述:

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。

給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。

示例 1:

輸入: 2

輸出: [0,1,3,2]

解釋:00 - 0

01 - 1

11 - 3

10 - 2

對於給定的 n,其格雷編碼序列並不唯一。

例如,[0,2,3,1] 也是乙個有效的格雷編碼序列。

00 - 0

10 - 2

11 - 3

01 - 1

示例 2:

輸入: 0

輸出: [0]

解釋: 我們定義格雷編碼序列必須以 0 開頭。

給定編碼總位數為 n 的格雷編碼序列,其長度為 2n。當 n = 0 時,長度為 20 = 1。

因此,當 n = 0 時,其格雷編碼序列為 [0]。

class

solution

for(

int i =

0; i <

2; i++

) res.

push_back

(i);

for(

int i =

2; i <= n; i++

)return res;}}

;/*00 01 or 00 10 n=1

00 01 11 10 n=2

000 001 011 010 110 111 101 100 n=3

*/

參考題解,思路差不多

class

solution

graycodehelper

(ret, now, n >>1)

;*now =

*now ^ n;

ret.

push_back

(*now)

;graycodehelper

(ret, now, n >>1)

;}vector<

int>

graycode

(int n);if

(n >0)

graycodehelper

(ret,

&now,

1<< n -1)

;return ret;}}

;

一種非常巧妙的辦法,節省了**,膜拜大佬

class

solution

};

Leetcode 89 格雷編碼

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,0,...

LeetCode89 格雷編碼

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,...

leetcode 89 格雷編碼

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯一。例如,0...