leetcode-89-格雷编码

链接-解题思路6
链接-解题思路15

解题思路-6
class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> targetArray;
        for (int i = 0; i < 1<<n ; ++i) {
            targetArray.push_back(i^(i>>1));
        }
        return targetArray;
    }
};


解题思路-15
class Solution {
public:
    vector<int> grayCode(int n) {
        int shift = 1;
        vector<int> res;
        while(n >= 0){
            if(res.size() == 0){
                res.push_back(0);
            }else{
                for(int i = shift-1; i >= 0; --i){
                    res.push_back(res[i] + shift);
                }
                shift *= 2;
            }
            --n;
        }
        return res;
    }
};


C语言实现
int* grayCode(int n, int* returnSize){
    int total=pow(2.0,n);
    int *a=(int*)malloc(sizeof(int)*total);
    *returnSize=total; // 这步在leetcode中为什么是必须的?
    for(int i=0;i<total;i++)
    {
        a[i]=(i>>1)^i;
    }
    return a;    
}

猜你喜欢

转载自blog.csdn.net/Edidaughter/article/details/121055025