Leetcode騰訊精選練習26 格雷編碼

2021-09-27 07:32:58 字數 928 閱讀 6923

原題:leetcode89

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

給定乙個代表編碼總位數的非負整數 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的格雷編碼,其長度為2的n次方,當n等於0時

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

這題需要注意的重點就是這句話。兩個連續的數值僅有乙個位數的差異。這就限制了輸出的格雷編碼序列是有一定規律的。

我覺得最好的演算法。

映象反射法

將n-1的格雷編碼映象反射出另外一半之後,之前一半前面加0,後面一半加1,這樣就能滿足條件。

程式設計實現(用到了一點數學規律)

其他演算法正在思考中。

Leetcode騰訊精選練習2

原題 兩個大小為 m 和 n 的排序陣列 nums1 和 nums2 請找出兩個排序陣列的中位數並且總的執行時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0 示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 看到這題目自然...

Leetcode騰訊精選練習04

原題 leetcode7 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1...

Leetcode騰訊精選練習05

請你來實現乙個atoi函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組...