自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小胡——uYou的专栏

静下心去写,静下心来想------------我的小窝

  • 博客(85)
  • 收藏
  • 关注

原创 笔试题整理1

1.给定一个环,每个点上都有数额不等的红包,不能同时拿相邻两个红包,请问最多能拿多少?     这题开始想的这不是典型的动态规划吗。然后做起来发现,有些不对,比如说取第一个,因为成环的关系,那么最后一个是注定不能取的。但是万一最后一个红包比较多呢?越想越复杂,后来想到,动态规划是后面的状态依赖于前面的状态,但此处,后面的状态(比如取最后一个)显然是对前面的状态有反过来的影响,所以不能用动态规划

2016-09-15 09:44:16 389

转载 操作系统面试题总结

1、线程与进程的区别联系2、进程通信方式有哪些?3、同步的方式有哪些?4、ThreadLocal与其它同步机制的比较5、进程死锁的条件 第一题:(1)线程是进程的一个实体,一个进程可以拥有多个线程,多个线程也可以并发执行。一个没有线程的进程也可以看做是单线程的,同样线程也经常被看做是一种轻量级的进程。并且进程可以不依赖于线程而单独存在,而线程

2016-09-01 09:38:40 913

转载 进程间通讯几种方式

进程通信的目的数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间共享数据 多个进程想要操作共享数据,一个进程对共享数据通知事 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。资源共享 多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁

2016-08-11 16:22:17 2785

转载 分段,分页与段页式存储管理

一.  分页存储管理1.基本思想用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。1)      等分内存页式存储管理将内存空间划分成等长的若干物理块,成为物理页面也成为物理块,每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页

2016-08-10 10:50:46 8365

原创 链表常见题总结一

链表可以说是笔试面试的重点,因为写一个链表相关的题可以在短时间写出来,并且考验测试人的水平。特别将平时经常做的链表的题拿上来,做个小结。   1. 求单链表中结点的个数   2. 将单链表反转   3. 查找单链表中的倒数第K个结点(k > 0)   4. 查找单链表的中间结点   5. 已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序 

2016-08-09 21:51:50 486

原创 TCP/IP常见面试题

1.OSI与TCP/IP各层的结构和功能,协议和作用。     OSI七层模型对应TCP/IP四层模型,只是分法不同而已。     应用层:提供应用层服务,文件传输(FTP),电子邮件(SMTP),  主要的协议还有HTTP(超文本传输协议),DNS,和telnet     表示层:用于数据格式化,代码转换,数据加密,没有协议     会话层:解除或建立与别的接点的联系,没有协议

2016-08-08 11:13:46 28581

原创 面试题67:机器人的运动范围

题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?        这一题比上一题容易,用变相

2016-08-01 11:30:43 293

原创 面试题66:矩阵中的路径

题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据

2016-08-01 10:29:19 833

原创 面试题65:滑动窗口的最大值

题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5

2016-07-31 16:19:08 794

原创 面试题64:数据流中的中位数

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。     考虑将流中的数据分为相同数量的两部分,也就是两个堆,一个堆中的数据全都小于另外一个堆,小一点的堆里作为最大堆,大一点的堆作为最小堆,这样这两个堆顶元素就与所求的中位数相关。class Sol

2016-07-30 21:52:48 982

原创 面试题63:二叉搜索树的第K个节点

题目:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val

2016-07-29 20:15:34 733

原创 面试题62:序列化二叉树

题目:请实现两个函数,分别用来序列化和反序列化二叉树。这里没有规定序列化的方式。class Solution {public:    char* Serialize(TreeNode *root) {            if(!root) return "$";        string r = to_string(root->val);        r.push_

2016-07-29 17:12:56 280

原创 面试题61:按之字形顺序打印二叉树

题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。     其实这题和之前的60题其实差不多,完全可以获得的正序的部分再逆序,但书上介绍了另一种方法,就按书上的写了。   struct TreeNode { int val; struct TreeNode *left;

2016-07-29 15:17:43 1076

原创 面试题60:把二叉树打印成多行

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。   struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }

2016-07-28 20:19:50 259

原创 面试题59:对称的二叉树

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL),

2016-07-28 19:42:44 270

原创 面试题58:二叉树的下一个节点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。代码如下:using namespace std;struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right;

2016-07-28 17:27:08 283

原创 面试题57:删除链表中的重复节点

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。     代码如下:struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x)

2016-07-28 16:49:35 280

原创 面试题56:链表中环的入口节点

题目:一个链表中包含环,请找出该链表的环的入口结点。    这道题借助于前面的链表的倒数第K个节点的思想,考虑快慢指针。考虑当知道了链表的环中所含的节点数目,用一个快指针先走这么多个节点,再用慢指针,两个同时走,此时他们相遇的第一个节点就是链表的入口节点。下面问题就转换为求链表环的节点数目。    考虑链表是否成环,同样用快慢指针,当他们相遇的那个节点,肯定是环内的节点,再让它自己一步步走

2016-07-28 16:00:30 257

原创 面试题55:字符流中第一个不重复的字符

题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述::如果当前字符流没有存在出现一次的字符,返回#字符。这种题目我一般是采用一个map去记它的计数,书上是采用一个数组去计数,采用数组的好处是,在字符很多很多的情

2016-07-27 09:21:54 438

原创 面试题54:表示数值的字符串

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。    表示数值的字符串遵循:    [sign]intergal-digits[.[fractional-digits]][e|E[si

2016-07-26 22:07:45 620

原创 面试题53:正则表达式匹配

题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。      这是我第一次意识到指针的好处,之前一直有点怕指针。我开始只想到用循环,可是循环对

2016-07-26 20:58:49 1207

原创 面试题52: 构建乘积数组

题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。    这题看书上的思路做的。考虑是将所求矩阵。分成两部分来求,一部分是A{0}***A[i-1],另一部分是A[i+1]***A[len-1];    class Solution

2016-07-25 20:25:57 289

原创 面试题51:数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。      这题如果考虑用一个map的话,时间复杂度O(n),空间复杂度也是O(n)。代码如下:class Soluti

2016-07-24 21:02:15 297

原创 boost asio定时器学习

Asio是基于操作系统提供的异步机制,其主要用于网络编程方面,使用了大量的类和函数封装了socket API。       使用asio不需要编译,但是它依赖于其它一些boost组件,包括boost_system和boost datetime库,用于提供系统错误和时间支持。     同步vs异步         asio的任何操作都需要io_service参与,它是asio的核心类。

2016-07-22 22:18:32 1107

原创 面试题49:将字符串转换成整数

题目:实现类似atoi函数。       本题主要考虑各种测试条件。        代码如下:class Solution {public: int StrToInt(string str) { if(str=="") return 0; int i=0; bool neg=false;

2016-07-22 20:18:36 269

原创 面试题47:不加加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。      思路是,考虑位运算。先不考虑进位,0+0为0,1+1为0,0+1为1,1+0为1.这正好是异或。然后考虑进的位,只有1+1才有进位,而且进位到前一位,相当于左移一位,然后再将前面的与进位的重复前面的加法。代码如下:class Solution {public: int Add(int

2016-07-21 20:14:37 271

原创 面试题46:求1+2+...+n

题目:要求不能使用乘除,,for,while,if,else switch,case等以及条件判断语句。        这题太开放了,直接看的书上的答案。        #include "stdafx.h"#include using namespace std;typedef unsigned int(*fun)(unsigned int);unsigned int s1(

2016-07-21 17:17:02 220

原创 用ACE实现生产者-消费者模式

ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE使用此类来实现主动对象模式。所有希望成为“主动对象”的对象都必须由此类派生。同时可将它看作是更高级的、更为面向对象的线程。ACE_Task处理的是对象,因此更有利于构造OO程序,产生更好的OO软件,而且,它还包括了一种用于与其他任务通信的易于使用的机制。ACE_Task可用作:更高级的线程(常称其为任务

2016-07-21 11:12:49 540

原创 面试题45:圆圈中最后剩下的数字

题目:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直

2016-07-20 21:07:45 339

原创 面试题44:扑克牌的顺子

题目描述       LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11

2016-07-20 19:25:37 964 1

原创 面试题43:n个骰子的点数

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s所有可能的值出现的概率。      该题是典型的动态规划问题。n个骰子它的和显然和前面n-1个骰子的状态有关。可以一步步划分来求,一般考虑设个数祖,一个记录当前是第多少个骰子,一个记录总和多少,还要记录总和的概率,因此此处考虑设个二维数组,p[m][n],m表示当前骰子数值,n代表当前点数。p[m][n]代表出现的次数或

2016-07-20 16:58:00 353

原创 面试题42:翻转单词顺序

题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?class Solutio

2016-07-19 19:51:14 243

转载 boost::thread线程创建方式总结

最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程库。在创建线程时遇到了几种线程创建方式现总结如下:    首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0& thre

2016-07-19 16:06:04 815

原创 c++异常处理小结

c++语言本身或者标准程序库跑出的所有异常,都派生自基类exception.这是其他数个标准异常的基类,他们共同构成一个类体系。            这些标准异常类别分为三组:(1)语言本身所支持的异常此类异常用以支撑某些语言特性。主要包括:bad_alloc:new操作失败会抛出。bad_cast:执行期间加在一个引用上面的动态性型别转换操作失败时抛出。

2016-07-19 11:56:23 886

原创 面试题41:和为s的两个数字VS和为s的连续正数序列

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述,对应每个测试案例,输出两个数,小的先输出。代码如下:class Solution {public: vector FindNumbersWithSum(vector array,int sum) { map map1;

2016-07-18 16:58:48 255

原创 面试题40:数组中只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。      这其实是除了有一个数字外,其它数字都出现两次的变种。只有一个数字不同的时候,可以采用异或来做。但此处是两个不同。书上给出的方法是先异或,得到结果值。然后在结果中,从右往左找到第一位是1的位号。由此考虑将数组分为两个数组。这样每个数组分别异或即可得到答案。      代码如下,其中要

2016-07-18 15:17:11 356

原创 华为2016实习机试题

在牛客网上做的。老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述:输入包括多组测试数据。每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表I

2016-07-17 21:46:11 907

原创 面试题39:二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。    这题可以用递归做,较为简单,代码如下:    struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x),

2016-07-17 11:45:14 232

原创 面试题38:数字在排序数字中出现的次数

题目:统计一个数字在排序数组中出现的次数。    由于是排序数组,考虑二分查找的思想。时间复杂度O(lgn).    代码如下:     class Solution {public: int GetNumberOfK(vector data ,int k) { return GetNumberOfK(data,0,data.size()-1,k);

2016-07-16 15:12:24 205

原创 爬虫实战:提取人和老鼠中RNA表达性较好的RNA序列

最近,一个学医的同学问我说,想找到RNA在人和老鼠身上都显性表达较好的序列(具体 医学用语我不懂),但是序列都太多了,问我能不能编个程序找出表达性较好的序列。然后就开始试着写了。      她告诉我她知道phylonocode上有所有有关人RNA序列和老鼠RNA序列的信息。于是我去下载了,结果发现,其中很重要的一项指标只能在网页上一条条地查看,并不包括在下载的信息中,几万条啊,简直是坑。于是我

2016-07-16 15:10:52 751

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除