当前位置:网站首页>LeetCode_格雷编码_中等_89.格雷编码
LeetCode_格雷编码_中等_89.格雷编码
2022-07-06 11:32:00 【小城老街】
1.题目
n 位格雷码序列是一个由 2n 个整数组成的序列,其中:
① 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)
② 第一个整数是 0
③ 一个整数在序列中出现不超过一次
④ 每对相邻整数的二进制表示恰好一位不同 ,且第一个和最后一个整数的二进制表示恰好一位不同
给你一个整数 n ,返回任一有效的 n 位格雷码序列 。
示例 1:
输入:n = 2
输出:[0,1,3,2]
解释:
[0,1,3,2] 的二进制表示是 [00,01,11,10] 。
- 00 和 01 有一位不同
- 01 和 11 有一位不同
- 11 和 10 有一位不同
- 10 和 00 有一位不同
[0,2,3,1] 也是一个有效的格雷码序列,其二进制表示是 [00,10,11,01] 。
- 00 和 10 有一位不同
- 10 和 11 有一位不同
- 11 和 01 有一位不同
- 01 和 00 有一位不同
示例 2:
输入:n = 1
输出:[0,1]
提示:
1 <= n <= 16
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/gray-code
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.思路
思路参考本题官方题解。
(1)对称生成
(2)二进制数转格雷码
3.代码实现(Java)
//思路1————对称生成
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> res = new ArrayList<Integer>();
res.add(0);
for (int i = 1; i <= n; i++) {
int m = res.size();
for (int j = m - 1; j >= 0; j--) {
res.add(res.get(j) | (1 << (i - 1)));
}
}
return res;
}
}
//思路2————二进制数转格雷码
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> res = new ArrayList<>();
for (int i = 0; i < (1 << n); i++) {
res.add((i >> 1) ^ i);
}
return res;
}
}
边栏推荐
- DaGAN论文解读
- Help improve the professional quality of safety talents | the first stage of personal ability certification and assessment has been successfully completed!
- PMP practice once a day | don't get lost in the exam -7.6
- CCNP Part 11 BGP (III) (essence)
- Druid database connection pool details
- The nearest library of Qinglong panel
- Documents to be used in IC design process
- Leetcode topic [array] - 119 Yang Hui triangle II
- 冒烟测试怎么做
- LeetCode-1279. Traffic light intersection
猜你喜欢
Looting iii[post sequence traversal and backtracking + dynamic planning]
JDBC详解
[paper notes] transunet: transformers make strongencoders for medical image segmentation
Sanmian ant financial successfully got the offer, and has experience in Android development agency recruitment and interview
Master Xuan joined hands with sunflower to remotely control enabling cloud rendering and GPU computing services
Characteristic colleges and universities, jointly build Netease Industrial College
关于静态类型、动态类型、id、instancetype
时钟轮在 RPC 中的应用
ROS custom message publishing subscription example
黑馬--Redis篇
随机推荐
The nearest library of Qinglong panel
Leetcode topic [array] - 119 Yang Hui triangle II
全套教学资料,阿里快手拼多多等7家大厂Android面试真题
Pytorch common loss function
AIRIOT物联网平台赋能集装箱行业构建【焊接工位信息监控系统】
[pytorch] yolov5 train your own data set
主从搭建报错:The slave I/O thread stops because master and slave have equal MySQL serv
黑馬--Redis篇
思維導圖+源代碼+筆記+項目,字節跳動+京東+360+網易面試題整理
[paper notes] transunet: transformers make strongencoders for medical image segmentation
ModuleNotFoundError: No module named ‘PIL‘解决方法
The dplyr package of R language performs data grouping aggregation statistical transformations and calculates the grouping mean of dataframe data
USB host driver - UVC swap
R language uses rchisq function to generate random numbers that conform to Chi square distribution, and uses plot function to visualize random numbers that conform to Chi square distribution
10 schemes to ensure interface data security
Detailed idea and code implementation of infix expression to suffix expression
驼峰式与下划线命名规则(Camel case With hungarian notation)
五金机电行业供应商智慧管理平台解决方案:优化供应链管理,带动企业业绩增长
通俗的讲解,带你入门协程
About static type, dynamic type, ID, instancetype