a***e 发帖数: 413 | 1 我的做法是在每个组的后面加0,然后反过来再加1.我纸上写写觉得是对的。但是
online judge不过。不知道有人面试的时候遇到过这道题么?还是必须按照标准的答案
做啊?多谢
Instead of changing the highest bit, I appended 0 and 1
vector grayCode(int n) {
vector r;
r.push_back(0);
if (n==0)
return r;
r.push_back(1);
if (n==1)
return r;
for (int i=1;i
{
vector tmp;
int k = r.size();
for (int j=0;j
{
tmp.push_back(r[j]<<1);
}
for (int j=k-1;j>=0; j--)
{
tmp.push_back((r[j]<<1)+1);
}
r=tmp;
}
return r;
} |
s*****j 发帖数: 1087 | 2 这样出来的结果的顺序是不是不对了?应该是在leading上加1 |
x******9 发帖数: 473 | 3 顺序不对啊...以中间为对称的上下对应位置不是只差一个1了 |
a***e 发帖数: 413 | 4 en,从2到3,
2
是 00 10 11 01
变成
000
100
110
010
011
111
101
001 |
r*******k 发帖数: 1423 | 5 没懂
这个解法不是perfect么?
【在 a***e 的大作中提到】 : en,从2到3, : 2 : 是 00 10 11 01 : 变成 : 000 : 100 : 110 : 010 : 011 : 111
|
a***e 发帖数: 413 | 6 OJ 不能通过,看到别的解法都不一样,心里就不确定啦 |