zoukankan      html  css  js  c++  java
  • [leetcode.com]算法题目

    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.

    根据题目中的意思,我们只要求出一组合适的解即可。正确答案非常精妙(我没有想出来。。。),充分利用位运算。看来对于位运算的知识我还是要再加强。

    答案出处:http://www.2cto.com/kf/201305/215316.html

     1 class Solution {
     2 public:
     3     
     4     vector<int> grayCode(int n) {
     5         // Start typing your C/C++ solution below
     6         // DO NOT write int main() function
     7         vector<int> result;
     8         int m=1<<n;
     9         for(int i=0;i<m;i++)
    10         {
    11             result.push_back(i^(i>>1));
    12         }
    13         return result;
    14         
    15     }
    16 };
    参考答案

    思路:首先,1<<n 是用来计算2的n次方。i^(i>>1)是格雷码的计算方法,表示第i个数是几。好久不用都想不起来了。。。

  • 相关阅读:
    mysql各个版本下载地址
    hadoop-0.20.2完全分布式集群
    04_Spring中使用Quartz
    03_CronTrigger
    02_SimpleTrigger
    02_ActiveMQ入门
    01_JMS概述
    01_Quartz基础结构
    Java开发高性能网站需要关注的事
    06_Jedis完成MySQL的条件查询案例
  • 原文地址:https://www.cnblogs.com/xuning/p/3311263.html
Copyright © 2011-2022 走看看