1.生成格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回 n 位的格雷码,顺序为从 0 开始。

测试样例:

1
返回:["0","1"]
2
返回:["00","01","11","10"]
3
返回:["000","001","011","010",110",111",101",100"]

参考代码:

#include <vector>
#include <string>class GrayCode {vector<string> grayCode;
public:vector<string> getGray(int n) {// write code here string code;for(int i=0;i<n;++i){code+="0";}this->grayCode.push_back(code);this->inerGetGray(code,n,0);return this->grayCode;}private:void inerGetGray(string& code,int codeLen,int pos){if(pos==codeLen)return;inerGetGray(code,codeLen,pos+1);if(code[pos]=='0')code[pos]='1';elsecode[pos]='0';this->grayCode.push_back(code);//进入vector向量容器inerGetGray(code,codeLen,pos+1);}
};

2.微信红包

春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。

测试样例:
[1,2,3,2,2],5
返回:2

解法一:
可以先对输入的数组进行排序,如果存在出现次数超过数组长度一半的数,那么数组的中位数,即长度为n的数组中下标为 ⌈n/2⌉\left\lceil n/2 \right\rceil⌈n/2⌉的数就是要求的数。

解法二:
根据数组特点,我们可以求出数组中出现次数最多的数。做法为:遍历数组时,保存两个值,一个是当前遍历的数,一个是次数。当我们遍历下一个数时,如果下一个数与我们当前保存的数相同,则次数加1,如果不同则次数减一。如果次数为零,我们保存下一个数并把次数设为1。遍历结束最后保存的数就是出现次数最多的数。

最后,再根据求出的出现次数最多的数来判断在数组中出现的次数是否超过数组长度一半。

参考代码:

//解法二
class Gift {
public:int getValue(vector<int> gifts, int n) {// write code hereint res=gifts[0];int count=1;for(int i=1;i<n;++i){if(res==gifts[i])++count;else--count;if(count==0){res=gifts[i];count=1;}}if(this->checkMoreThanHalf(gifts,n,res))return res;else return 0;}bool checkMoreThanHalf(vector<int>& gifts,int len,int number){int times=0;for(int i=0;i<len;++i){if(gifts[i]==number)++times;}bool isMoreThanHalf=true;if(times*2<=len)isMoreThanHalf=false;return isMoreThanHalf;}
};

参考文献

[1] 格雷码
[2] 剑指Offer.何海涛.电子工业出版社

腾讯 2016 春季实习校招模拟笔试相关推荐

  1. 腾讯 2016 春季实习校招二面回忆(C++后台)

    感谢您对博文的关注!有需要内推腾讯的可以 QQ(1589276509)联系我哈,期待您的加入. 文章目录 1.前言 2.问题汇总 3.小结 参考文献 1.前言 2016-04-12 日下午在广州东圃喜 ...

  2. 腾讯 2016 春季实习校招 HR 面回忆(C++后台)

    感谢您对博文的关注!有需要内推腾讯的可以 QQ(1589276509)联系我哈,期待您的加入. 1.前言 2016-04-14 日,还是在广州东圃喜喜来登酒店参加了安全技术岗的最后一面--HR面,整个 ...

  3. 腾讯 2016 春季实习校招一面回忆(C++ 后台)

    感谢您对博文的关注!有需要内推腾讯的可以 QQ(1589276509)联系我哈,期待您的加入. 1.前言 2016-04-11 日在广州东圃喜来登酒店参加了腾讯的 C++ 安全技术类后台一面.面试官人 ...

  4. 金山 WPS 2016 春季实习校招笔试面试回忆

    文章目录 1.笔试 2.一面 3.二面 4.小结 参考文献 下面将我在广州参加的 2016 年春季金山 WPS 实习招聘的整个过程中遇到的问题记录如下.不全,但是有些题目还是值得思考的. 1.笔试 2 ...

  5. 多益网络 2016 春季实习校招笔试回顾(C++游戏后台)

    文章目录 前言 试题 小结 参考文献 前言 2016.04.16 晚中山大学大学城校区(东校区)参加了多益网络的 C++ 游戏后台开发的笔试.有几道笔试题还是值得斟酌和记录的,特记录如下.比较可惜,因 ...

  6. CVTE 2016 春季实习校招一面(C++后台)

    文章目录 前言 问题 小结 参考文献 前言 2016-03-15 日,参加了 CVTE 的技术一面,很不幸,我和我的两位小伙伴均跪在了一面.先将当日的面试内容汇总如下,供后来者参考.我们三人各自也都总 ...

  7. 滴滴2016.09.06校招 在线笔试 - 2道编程题

    滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...

  8. 腾讯2016春季实习生(技术运营岗)招聘电话面试题汇集。

    3月份开始投简历,到四月份截止.电话一般为上午打过来,电话为0755开头,深圳座机区号. 题目为: 1,你在学校的时候发现上不了网怎么办. 2,访问网页的过程是怎样的. 3,说说TCP/IP五层模型. ...

  9. 对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:----腾讯2016研发工程师在线模拟笔试题

    对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是: 正确答案: A   你的答案: 空 (错误) 空间复杂度是O(l) 空间复杂度是O(n) 空间复杂度是O(logn) 空间复杂度是 ...

最新文章

  1. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance)
  2. 数组去重(包括es6)
  3. spring boot 启动卡住_SpringBoot集成的44种启动器,你知道几种?
  4. python 生成pdf_如何使用Python生成PDF?
  5. SubSonic中的字段付值--MakeOld Update
  6. python matplotlib 画一条水平直线遇到的问题
  7. 另一个.NET上的文档数据库Raven[转载]
  8. 【优化算法】模拟退火算法简介
  9. 福昕pdf阅读器 去广告版|福昕pdf阅读器Foxit reader 去广告电脑版下载v9.3
  10. LA4329 PingPong (线段树)
  11. ubuntu程序莫名崩溃显示killed,程序闪退,排除OOM
  12. VB如何自动保存_VB开发的身份证个人信息自动识别软件
  13. 【Qt+FFmpeg】给视频添加时间水印
  14. StackOverflow和OutOfMemory
  15. 高可用架构的设计方法
  16. unity光圈旋转效果
  17. 专注力的重要性和提高的方法
  18. I-NUIST南京信息工程大学Android设备校园网自动登录
  19. 关于日期正则表达式的思路详解
  20. 【MFC】 多国语言设置

热门文章

  1. 移动互联网新协议 GTP 中被曝多个高危漏洞,影响4G和5G 用户
  2. 在Linux系统中安装caffe
  3. Optimization of Machine Learning
  4. BZOJ1061: [Noi2008]志愿者招募(线性规划)
  5. dyld 加载 Mach-O
  6. 一个很好用的JavaScript的文件上传插件plupload
  7. java基础巩固笔记(5)-多线程之线程并发库
  8. spring自带任务调度-xml方式
  9. 深度优先搜索(DFS)递归形式改为非递归形式
  10. 数据可视化(5)--jqplot经典实例