Leetcode: Gray Code
2016-08-24 15:43
281 查看
原题链接:https://leetcode.com/problems/gray-code/
我在github上的leetcode仓库:https://github.com/cooljacket/leetcodes
有了上图之后,可以看出,这其实是个很直观的算法:
1. 从0开始;
2. 每次将上一步的倒过来复制一遍,然后把这部分目前的最高位置为1,追加到原来的部分作为下一步的输入。
我在github上的leetcode仓库:https://github.com/cooljacket/leetcodes
题意
使用镜像法构建格雷码序列。思路
参考维基百科的解释,镜像法如下图所示:有了上图之后,可以看出,这其实是个很直观的算法:
1. 从0开始;
2. 每次将上一步的倒过来复制一遍,然后把这部分目前的最高位置为1,追加到原来的部分作为下一步的输入。
代码
class Solution { public: // 镜像构建法很容易理解,就是每次对称复制一遍,然后在后半部分的开头的最高位“+1” // 注意n=0的情况是返回{0} vector<int> grayCode(int n) { vector<int> allCodes; allCodes.push_back(0); for (int i = 1; i <= n; ++i) { vector<int> mirror(allCodes.rbegin(), allCodes.rend()); int mask = 1 << (i-1); for (int j = 0; j < allCodes.size(); ++j) { mirror[j] = mask | mirror[j]; } allCodes.insert(allCodes.end(), mirror.begin(), mirror.end()); } return allCodes; } };
相关文章推荐
- LeetCode||89. Gray Code
- leetcode:Gray Code
- leetcode——89——Gray Code
- [LeetCode] Gray Code
- LeetCode:Gray Code
- leetcode:Gray Code
- [leetcode-89]Gray Code(c++)
- Leetcode 89 Gray Code
- leetcode 之 Gray Code 解题思路
- [leetcode] Gray Code
- [Leetcode] Gray code 格雷码
- LeetCode89:Gray Code
- [Leetcode] Gray Code (Java)
- Leetcode: Gray Code
- **(leetcode_backtracking,递归) Gray Code
- LeetCode: Gray Code
- LeetCode: Gray Code
- LeetCode89——Gray Code
- *LeetCode 89. Gray Code 规律题