LeetCode: Gray Code [089]
【题目】
The gray code is a binary numeral system where two successive values differ in only one bit.
Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.
For example, given n = 2, return [0,1,3,2]
. Its
gray code sequence is:
00 - 0 01 - 1 11 - 3 10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example, [0,2,3,1]
is also a valid gray code sequence according
to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
【题意】
本题是有关格雷码转换的,知道二进制转换为格雷码的转换规则,本题就很easy了。
给定二进制下的位数n, 要求得到格雷码序列,并输出每一个格雷码相应的十进制表示。相邻格雷码之间仅仅有一位不同。
对于输入的n,格雷码序列可能有多个,题目要求输出任一个序列就可以。
序列必须以0開始。
【思路】
n位二进制可表示2^n个数。因此格雷码序列长度即为2^n我们仅仅需从小到大把二进制转换成相应的格雷码就可以。转换规则例如以下:
如果二进制数为x, 则其相应的格雷码为x>>1^x
即x和其本身向右移动一位后的结果做抑或运算。
【注意。n=0是本题觉得它能表示一个值0】
【代码】
class Solution { public: vector<int> grayCode(int n) { vector<int> result; int size=1<<n; //一共能够表示2^n个数 int x=0; while(x<size){ result.push_back(x>>1^x); //转换成相应格雷码 x++; } return result; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架