[LeetCode 89]Gray Code (格雷码问题)

来源:互联网 发布:mac迅雷下载不了 编辑:程序博客网 时间:2024/06/06 05:22

题目链接:gray-code


import java.util.ArrayList;import java.util.List;/** * 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 - 001 - 111 - 310 - 2Note: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. * */public class GrayCode {//12 / 12 test cases passed.//Status: Accepted//Runtime: 188 ms//Submitted: 3 minutes ago//时间复杂度O(2 ^ n) ,空间复杂度 O(1)    public List<Integer> grayCode(int n) {List<Integer> graycode = new ArrayList<Integer>();int total = 1 << n;        for (int i = 0; i < total; i++) {graycode.add(i ^ (i >> 1));//格雷码公式 :n ^ (n / 2)}        return graycode;    }    public static void main(String[] args) {GrayCode codes = new GrayCode();System.out.println(codes.grayCode(4));}}


0 0