89. Gray Code

1.問題

2.想法

  • 提問

    • 確認題意: 相鄰的element只會差異一個bit, 因此如果DFS的方式順序不對

  • function header, parameter

  • test input

  • 說明想法

    • 每次double容器中的元素, 因此n回後, 容器的元素數目為2 ^ n

    • 每回合會反向改變固定bit的值

  • 測試計算複雜度

3.程式碼

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> res;
        //2的次方為1, n=0時, res也會有一個element
        res.push_back(0);
        
        //每次讓res中elememt的元素double
        for (int i = 0; i < n; i++) {
            int size = res.size();
            //同一回合中, 對每個res中的element都只改變同一個bit
            for (int j = size - 1; j >= 0; j--) {
                res.push_back(res[j] | 1 << i);
            }
        }
        
        return res;
    }
};

Last updated