2016校招腾讯研发岗笔试题---递归法求解格雷码
生活随笔
收集整理的這篇文章主要介紹了
2016校招腾讯研发岗笔试题---递归法求解格雷码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼為格雷碼( Gray Code )。請編寫一個函數,使用遞歸方法生成 N 位的格雷碼。
測試輸入輸出如下
輸入:1
輸出:[“0”,”1”]
思路:使用遞歸法求解,得先找規律
(1)當n=1時候
輸出:[“0”,”1”]
(2)當n=2時候
輸出:[“00”,”01”,”10”,”11”]
(3)當n=3時候
輸出:[“000”,”001”,”010”,”011”,”100”,”101”,”110”,”111”]
………
規律就是輸出的字符串總個數是2的n次方。
第n個輸出的字符串是由第n-1位變換而來,如何變換?
n=3時候的字符串數組如何由n=2的字符串數組變換而來?
“000”
“001”是由前一組(n=2)中的“00”在右側只加了“0”和只加了“1”做到的
“010”
“011”是由前一組(n=2)中的“01”在右側只加了“0”和只加了“1”做到的
……
總結
以上是生活随笔為你收集整理的2016校招腾讯研发岗笔试题---递归法求解格雷码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《剑指offer》链表中环的入口节点
- 下一篇: 《剑指offer》删除链表中重复的节点