leetcode笔记:Gray Code(2016腾讯软件开发笔试题)

一.题目描述

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.

class Solution
{
public:
  vector<int> buildGrayCode(int n)
  {
  }
  
  
  int ans(int n)
  {
      //每一位都 i & (i -1)
      vector<int> vec;
      int x = 1 << n;
      for(int i=0; i<x; i++)
      {
      vec.push_back(i & (i>>1));
      cout << vec[i] << ‘ ‘;
      }
      return vec;
  }
  
  //可以改成递归
  int recur_ans(int n)
  {
    vector<int> vec;
    if(n < 0 ) return vec;
    if(n == 1) {
        vec.push_back(0);
        vec.push_back(1);
        return vec;
    }
    for(int i=2; i<n; i++)
    {
      int highbit = 1 << (i - 1);
      for(int j = vec.size() -1; j>=0; j--)
      {
          vec.push_back(highbit|j);
      }
    }
    return vec;
  }
   
   
  vector<int> recur_ans2(int n)
  {
	  if(n ==0)
	  {
		  vector<int> vec;
		  vec.push_back(0);
		  return vec;
	  }else{
		  vector<int> res = recur_ans2(n-1);
		  int len = res.size();
		  int highbit = 1 << (n-1);
		  for(int i=len-1; i>=0; i--)
		  {
			  res.push_back(res[i] | highbit );
		  }
		  return res;
	  }
  }
};
时间: 2024-10-12 17:19:49

leetcode笔记:Gray Code(2016腾讯软件开发笔试题)的相关文章

腾讯软件开发笔试题

这是一位应聘腾讯软件开发-应用开发方向(.net方向)的求职者经历的笔试,请看他为大家分享的经验: 一.笔试 数据库(较多).编译原理(一题).操作系统(主要).数据结构(主要) 二.一面 SQL语句::求平均分在60分以上的同学学号和平均分数 两个水桶.一个5L.一个6L,叫你称3L 如何统计全国的便利店的数量? 你在看电视,突然电视机黑了,你怎么办? 你住在荒郊野岭的一个旅店里,三更半夜,你想吃烧烤,你会怎么做? 事务是什么? 范式是什么? 说一下你对面向对象的理解. 类和接口有什么区别?

深圳科陆集团软件开发笔试题

LeetCode:Gray Code

1.题目名称 Gray Code(格雷码) 2.题目地址 https://leetcode.com/problems/gray-code/ 3.题目内容 英文: 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

LeetCode --- 89. Gray Code

题目链接:Gray Code 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 b

2016年上半年软件设计师考试试题上午卷(1-25题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(1-25题) ●VLIW是(1)的简称. A.复杂指令系统计算机 B.超大规模集成电路 C.单指令流多数据流 D.超长指令字 ●主存与Cache的地址映射方式中,(2)方式可以实现主存任意一块装入Cache中任意位置,只有装满才需要替换. A.全相联 B.直接映射

2016年上半年软件设计师考试试题上午卷(26-50题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(26-50题) ●进程P1.P2.P3.P4和P5的前趋图如下图所示: 若用PV操作控制进程P1.P2.P3.P4和P5并发执行的过程,则需要设置5个信号S1.S2.S3.S4和S5,且信号量S1-S5的初值都等于零.下图中a和b处应分别填(26):c和d处应分别

2016年上半年软件设计师考试试题上午卷(51-75题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(51-75题) ●数据的物理独立性和逻辑独立性分别是通过修改(51)来完成的. A.外模式与内模式之间的映像.模式与内模式之间的映像 B.外模式与内模式之间的映像.外模式与模式之间的映像 C.外模式与模式之间的映像.模式与内模式之间的映像 D.模式与内模式之间的映

[LeetCode][JavaScript]Gray Code

Gray Code 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

【leetcode】Gray Code

Gray Code 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