
常见面试问题
文章平均质量分 76
逆風的薔薇
这个作者很懒,什么都没留下…
展开
-
Minimum Window Substring 最小覆盖子串算法
题目 最小子串覆盖 描述 笔记 数据 评测给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。您在真实的面试中是否遇到过这个题? Yes 注意事项如果在source中没有这样的子串,返回"",如果有多个这样的子串,返回起原创 2016-04-12 16:13:57 · 6238 阅读 · 0 评论 -
C++基础知识易错点总结(1)
1. 在C++中,不能被重载的运算符有:sizeof. 成员运算符.* 成员指针运算符:: 作用域运算符?: 条件运算符2. C++语言多态性:编译时多态和运行时多态:编译时多态可通过函数重载和模板实现;运行时多态可通过虚函数实现;实现运行时多态机制称为动态绑定;3. C++中,头文件引用问题:#include 会出错。#inlude " " 首先搜索本地目录,如果原创 2016-02-29 11:27:11 · 1031 阅读 · 0 评论 -
海量数据处理
题目 有一亿个浮点数,请找出其中最大的10000个。提示:假设每个浮点数占4B,一亿个浮点数就要占用相当大的空间,因此不能一次将全部读入内存进行排序。 方法一:独处100万个数据,找出最大的一万个。如果这一万个数据选择够理想,那么以这一万个数据中最小的为基准,可以过滤掉1亿个数据里面99%的数据,这样就在剩余的100W个数据中找出最大的10000个即可。方法二:分块查找,选原创 2016-04-02 15:17:28 · 719 阅读 · 0 评论 -
N皇后问题的递归与非递归解法
题目 N皇后问题n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例对于4皇后问题存在两种解决的方案:[ [".Q..", // Soluti原创 2016-04-12 17:05:55 · 7911 阅读 · 0 评论 -
字符串转换为整数
题目 转换字符串到整数实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。样例"10" =>10"-1" => -1"123123123123123" =>原创 2016-04-13 17:31:43 · 3296 阅读 · 0 评论 -
经典排序算法总结
概览排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。一、直接插入排序1、算法的伪代码(这样便于理解): INSERTION-SORT (A, n) A[1 . . n]原创 2016-04-13 19:28:55 · 1189 阅读 · 0 评论 -
常见C++面试问题总结1
C++面试总结【1】同步通信和异步通信的区别?答:1) 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。2) 同步通信效率高;异步通信效率低。3) 同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。【2】TCP协原创 2016-07-14 20:41:42 · 6584 阅读 · 0 评论 -
常见C++面试问题总结2
【1】虚函数和纯虚函数?区别和应用? 【2】知道哪些IO模型?见《Unix网络编程··卷一》P123(1)阻塞式I/O(2)非阻塞式I/O(3)I/O复用(4)信号驱动式I/O(5)异步I/O 【3】QQ哪些功能用了TCP?哪些用了UDP?UDP不可靠,为什么还要用它? 腾讯QQ即使用了TCP又是用了UDP,但是以UDP为主原创 2016-08-09 11:15:15 · 1816 阅读 · 0 评论 -
最长递增子序列B
题目题目地址:牛客网--完美世界笔试原题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6.输入描述:第一行包含一个整数T,代表测试数据组数。对于每组测试数据:N-数组的长度a1 a2 ..原创 2016-07-31 21:43:07 · 608 阅读 · 0 评论 -
最长递增子序列
题目给定一个整数序列arr,长度为N,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。样例给出 [5,4,1,2,3],LIS 是 [1,2,3],返回 3给出 [4,2,4,原创 2016-05-10 20:56:54 · 1375 阅读 · 0 评论 -
最长公共子串
题目给定两个字符串str1和str2,返回两个字符串的最长公共子串。举例:str1=“1AB2345CD”,str2="12345EF",返回“2345”分析典型的动态规划问题。假设str1的长度为m,str2的长度为n。方法一:时间复杂度O(mn),空间复杂度O(mn)声明大小为m*n的矩阵dp,求解二维动态规划表,行数为m,列数为n。dp[i][j]的含义是必须把s原创 2016-05-09 22:13:12 · 1724 阅读 · 0 评论 -
最长公共子序列
题目给定两个字符串str1和str2,返回两个字符串的最长公共子序列。举例:str1="1A2C3D4B56",str2="B1D23CA45B6A"“123456”和"12C4B6"都是最长公共子序列,返回哪一个都行。分析经典动态规划,求解二维动态规划表。假设str1的长度为m,str2的长度为n,声明大小为m*n的矩阵dp,行数为m,列数为n。dp[i][j]的含义是s原创 2016-05-09 21:39:06 · 1408 阅读 · 0 评论 -
LintCode 81 -- 数据流中位数
题目中位数 II 数字是不断进入数组的,在每次添加一个新的数进入数组的同时返回当前新数组的中位数。说明中位数的定义:中位数是排序后数组的中间值,如果有数组中有n个数,则中位数为A[(n-1)/2]。比如:数组A=[1,2,3]的中位数是2,数组A=[1,19]的中位数是1。样例持续进原创 2016-05-10 20:39:42 · 2149 阅读 · 0 评论 -
1_鸡兔同笼问题
题目今有鸡兔同笼,上有35头,下有94足,问鸡、兔各有几只?分析这个问题需要计算鸡的数量和兔的数量,可知均为0~35之间,最直接的思路就是使用穷举法逐个判断是否符合,从而搜索答案~代码#include <iostream>#include <cstdlib>using namespace std;//穷举算法,对鸡兔的数量用引用传递,若存在结果返回true,否则返回falsebool Qiong原创 2015-09-08 17:03:44 · 1174 阅读 · 0 评论 -
4_蒙特卡罗算法求圆周率PI
题目蒙特卡罗算法的典型应用之一为求圆周率PI问题。思想:一个半径r=1r=1的圆,其面积为:S=PI∗r2=PI/4S = PI * r^2 = PI/4一个边长r=1r=1的正方形,其面积为:S=r2=1S = r^2 = 1那么建立一个坐标系,如果均匀的向正方形内撒点,那么落入圆心在正方形中心,半径为1的圆内的点数与全部点数的比例应该为PI/4PI/4,根据概率统计的规律,只要撒的点足够多,那么原创 2015-09-11 20:27:03 · 2359 阅读 · 0 评论 -
3_寻找假币问题(分治法)
题目一个袋子里有30个银币,其中一枚是假币,并且假币和真币一模一样,肉眼很难分辨,目前只知道假币比真币重量轻一点。 请问,如何区分出假币?分析首先,分析一下寻找假币问题,采用递归分治的思想求解。首先为每个银币编号,然后将所有的银币等分为两份,放在天平的两边。这样就将区分30个银币的问题变为区别两堆银币的问题。因为假币分量较轻,因此天平较轻的一侧中一定包含假币。再将较轻的一侧中银币等分为两份,原创 2015-09-10 21:30:24 · 24157 阅读 · 4 评论 -
C++基础知识易错点总结(3)
第一部分1. 异步通信和同步通信的区别?同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可以经过任意长的时间间隔再发送下一个字节;同步通信效率高,异步通信效率低;同步通信复杂,双方时钟允许的误差小;异步通信简单,双方时钟可以允许一定误差;同步通信可用于点对多点,异步通信只适用于点对点;2. T原创 2016-03-02 21:50:20 · 1071 阅读 · 0 评论 -
辗转相除求最大公约数
序求最大公约数的最常用的算法是欧几里得算法,也称为辗转相除法。问题定义为求i和j的最大公约数gcd(i,j),其中i和j是整数,不妨设i>j。算法可以递归的表示:1. 如果j能整除i,那么gcd(i,j)=j;2. j不能整除i,令r=i%j,那么gcd(i,j)=gcd(j,r)。C实现int gcd(int i, int j){ int r = i % j原创 2016-02-29 11:29:35 · 4888 阅读 · 0 评论 -
2_兔子产仔问题
题目如果一对两月大的兔子以后每个月都能生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,1月份出生,3月份才可以产仔。那么假定一年内没有产生兔子死亡事件,那么一年后共有多少对兔子?分析我们先来分析一下兔子产仔问题,逐月来看每月的兔子数量:第一个月: 1对 第二个月: 1对 第三个月: 2对 第四个月: 3对 第五个月: 5对…从上面可以看出,从第三个月开始,每个月的兔子总对原创 2015-09-08 17:19:13 · 2411 阅读 · 0 评论