标签:
1 class Solution 2 { 3 public: 4 vector<int> grayCode(int n) 5 { 6 vector<int> result={0}; 7 if(n==0) return result; 8 return dfs(n); 9 } 10 vector<int> dfs(int n) 11 { 12 if(n==1) 13 { 14 vector<int> v={0,1}; 15 return v; 16 } 17 vector<int> tmp=dfs(n-1); 18 int len=tmp.size(); 19 for(int i=len-1;i>=0;i--) 20 { 21 tmp.push_back(tmp[i]+len); 22 } 23 return tmp; 24 } 25 };
这个方法主要是利用对称性。但是性能上并不是太好。最优解法应该是利用位运算。参考此代码中的第一个评论。
需要注意,在n=0时返回的不是空vector,而是{0}.
leetcode Ch3-DFS & Backtracking II
标签:
原文地址:http://www.cnblogs.com/forcheryl/p/4505067.html