文档章节

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

Lennie002
 Lennie002
发布于 2015/09/09 22:42
字数 270
阅读 133
收藏 2

一.题目描述

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;
	  }
  }
};


© 著作权归作者所有

Lennie002
粉丝 8
博文 120
码字总数 64058
作品 0
大连
私信 提问
90 道名企笔试和算法题 (含答题讨论)

(点击上方公众号,可快速关注) 节选自「算法爱好者」微信公号的精选算法题和名企笔试题。 问:如何获取题目列表? 答:① 长摁二维码关注「算法爱好者」,② 然后给它发送 名企笔试 或 算法...

Python开发者
2018/01/21
0
0
九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试二十题(10.12)

九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试二十题 题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9、10月份陪伴了至少三届毕业生...

mickelfeng
2013/10/12
244
0
机器学习实习生面试总结(阿里 腾讯等)

今年来一直在找暑期实习,现在基本已经确定了,前后历经差不多2个月吧,发现了很多自己的缺点,同时也希望写出来供需要的人参考了解 先说下我自己的情况吧,决定去腾讯TEG的机器学习岗实习了...

Gavin__Zhou
2017/05/01
0
0
程序员跳槽面试刷题必备,微软工程师放大招!| 程序员硬核评测

整理 | 一一 出品 | AI科技大本营(ID:rgznai100) 春节刚过,年终奖收入囊中,属于工程师们一年一度的跳槽季也来了。 跳槽后薪水翻倍自然爽歪歪,但最怕的是面试翻车,那就悲剧了。可想而知...

CSDN资讯
02/19
0
0
春招已近,这份GitHub万星的ML算法面试大全请收下

机器之心整理,项目作者:HUA Yang,机器之心编辑部。 春季到来,春招不久也会开始。在本项目中,作者为大家准备了 ML 算法工程师面试指南,它提供了完整的面试知识点、编程题及题解、各科技...

机器之心
02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部