1 class Solution 
 2 {
 3 public:
 4     vector<int> grayCode(int n) 
 5     {
 6         int mount=(1<<n);
 7         vector<int> res(mount);
 8         for(int i=0;i<mount;i++)
 9             res[i]=i^(i>>1);
10         return res;
11     }
12 };

方法过于强势以致于看不懂为啥

下面这个是常人方法,以0和1为基准,在这上面进行容器的累加

 1 class Solution 
 2 {
 3 public:
 4     vector<int> grayCode(int n) 
 5     {
 6         vector<int> res={0};
 7         if(n==0)
 8             return res;
 9         res.push_back(1);
10         if(n==1)
11             return res;
12         int base=2,count=2;
13         while(count<=n)
14         {
15             vector<int> cur=res;
16             int sz=res.size();
17             for(int i=sz-1;i>=0;i--)
18                 cur.push_back(res[i]+base);
19             res=cur;
20             base*=2;
21             count++;
22         }
23         return res;
24     }
25 };

 

posted on 2018-07-30 21:45  高数考了59  阅读(117)  评论(0)    收藏  举报