题意:
给出一组n位的Gray Code。
思路:
之前想用模拟的方法求解,发现时间复杂度有点高。参考了wiki上的生成方法:https://en.wikipedia.org/wiki/Gray_code
n*(n/2)
代码如下:
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* grayCode(int n, int* returnSize) {
int k=pow(2,n);
int i,j;
int *p=(int*)malloc(sizeof(int)*k);
for(i=0;i<k;++i){
*(p+i)=i^(i/2);
}
*returnSize=k;
return p;
}

本文介绍了一种高效的格雷码生成方法,通过简单的数学运算实现,避免了模拟方法带来的高时间复杂度问题,并提供了完整的C语言实现代码。
387

被折叠的 条评论
为什么被折叠?



