博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----89. Gray Code
阅读量:4113 次
发布时间:2019-05-25

本文共 820 字,大约阅读时间需要 2 分钟。

链接:

大意:

给定一个非负整数n,要求写出所有二进制位数为n的数,且相邻的两数的二进制表达式只有一位不同。另:当n==0时,只存在0这一个数。例子:

思路:

通过观察规律可知:

n == 0时,list中可含元素:0

n == 1时,list中可含元素:0,1

n == 2时,list中可含元素:0,1,3,2

n == 3时,list中可含元素:0,1,3,2,6,7,5,4

....

可以看到,n == i + 1时的list中的元素中:前半部分为n == i时list中的元素,后半部分为 n == i的list的逆序遍历元素加上某一个数,可以看到这个数是2^(n  - 1)。

其实,以上这些规律是可以通过写出各个数的二进制表达形式可以得到的。

代码:

class Solution {    public List
grayCode(int n) { ArrayList
res = new ArrayList<>(); res.add(0); int i = 0, gap = 1; while (i < n) { int index = res.size() - 1; while (index >= 0) { res.add(res.get(index--) + gap); } gap <<= 1; i++; } return res; }}

结果:

结论:

当需要访问List中的元素时,优先使用ArrayList。在尾部插入一个数据,ArrayList和LinkedList的时间复杂度都是O(1),不考虑找到尾部位置的时间开销的话。 

 

 

 

转载地址:http://itesi.baihongyu.com/

你可能感兴趣的文章
Linux epoll模型
查看>>
Linux系统编程——线程池
查看>>
Linux C++线程池实例
查看>>
shared_ptr的一些尴尬
查看>>
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
在JS中 onclick="save();return false;"return false是
查看>>
idea 有时提示找不到类或者符号
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
MFC矩阵运算
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输出文件流ofstream用法详解
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>