1238 迴圈碼排列

2021-10-18 07:45:30 字數 1151 閱讀 3495

題目描述:

給你兩個整數 n 和 start。你的任務是返回任意 (0,1,2,…,2^n-1) 的排列 p,並且滿足:

p[0] = start

p[i] 和 p[i+1] 的二進位制表示形式只有一位不同

p[0] 和 p[2^n -1] 的二進位制表示形式也只有一位不同

示例 1:

輸入:n = 2, start = 3

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

解釋:這個排列的二進位制表示是 (11,10,00,01)

所有的相鄰元素都有一位是不同的,另乙個有效的排列是 [3,1,0,2]

示例 2:

輸出:n = 3, start = 2

輸出:[2,6,7,5,4,0,1,3]

解釋:這個排列的二進位制表示是 (010,110,111,101,100,000,001,011)

1 <= n <= 16

0 <= start < 2^n

方法1:

(1)先將數字逐個轉為對應的格雷碼,然後找到第乙個值對應的格雷碼,並將陣列對應的進行反轉;

class

solution

; res.

reserve

(pow(2

,n))

;//預置空間

for(

int i=

1;i++i)

}//找到對應的起始位置

int index=0;

while

(res[index]

!=start)

//進行對應的反序

reverse

(res.

begin()

,res.

begin()

+index)

;reverse

(res.

begin()

+index,res.

end())

;reverse

(res.

begin()

,res.

end())

;return res;}}

;

LeetCode每日一題 1238 迴圈碼排列

tagmath difficultymedium link 根據89題格雷碼可以得知二進位制與格雷碼之間有這樣的規律 假設格雷碼第n位為g n 二進位制第n位為b n 對於n 1位,g n 1 b n 1 g n 1 b n 1 g n 1 b n 1 g n b n 1 xorb n g n b ...

C語言實現迴圈碼系統與非系統編碼

迴圈碼系統與非系統編碼的c語言實現 include stdio.h include define n10 系統編碼實現 void x int g n int c n int r,int n c n r n a n 2 n q n degg r 求資訊多項式的次冪 for i 0 i n r 1 i ...

關於迴圈冗餘碼

關於迴圈冗餘碼具體是幹嘛的,舉個例子就可明白。你要給遠在他鄉的好友送禮物,假設路上艱險重重,你怎麼保證你的好友收到的禮物一定是你給他傳送的原品呢?這時你想到了乙個辦法,在禮物中額外加點東西,針對這個新的禮物設計一種規則,使得你的好友用這套規則開啟禮物後呈現你倆約定好的模樣,如果能夠實現那麼就是原品,...