Gray Code解题报告

来源:互联网 发布:sqlserver declare 编辑:程序博客网 时间:2024/05/23 21:12

https://leetcode.com/problems/gray-code/

格雷码,其实我没有搞清楚格雷码的规律。以3为例,我以为是这样的:
000,001,010,011,100,101,110,111
所以并没有什么规律,但是,其实格雷码是这样的:
000,001,011,010,110,111,101,100
这样规律就很明显了,第n个数字的格雷码就是给第n-1个数字的格雷码逆序加上1<<n位
所以代码:

class Solution {public:    vector<int> grayCode(int n) {        vector<int> result;        result.push_back(0);        for(int i=0;i<n;i++){            int highest=1<<i;            for(int i=result.size()-1;i>=0;i--){                result.push_back(highest+result[i]);            }        }        return result;    }};


0 0
原创粉丝点击