精选面试题
@SmartSi
Stay Hungry, Stay Foolish
展开
-
笔试面试题精选
[经典面试题][去哪网]合并日期 - Yoona - 博客频道 - CSDN.NET[经典面试题][百度]c++实现STL中的string类 - Yoona - 博客频道 - CSDN.NET[经典面试题][百度]电话号码对应英语单词 - Yoona - 博客频道 - CSDN.NET[经典面试题]二叉树宽度 - Yoona - 博客频道 - CSDN.NET[经典面试题][腾讯]原创 2016-01-04 21:38:43 · 3062 阅读 · 0 评论 -
[经典面试题][搜狗]在一个字符串中寻找包含全部出现字符的最小字串
题目一个字符串中含有n个字符,其中有m个不同的字符,n>>m,用最少的时间和空间找到包含所有这m个字符的最短的字串,不考虑特殊字符,只考虑字母数字即可。 例如: abccbaddac, 返回:cbad aabcadbbbcca,返回:bcad思路 [算法系列之二十二]包含T全部元素的最小子窗口 本题目相比连接中所说的稍微简单一些,本题目不用考虑重复字符。代码 /*-----------原创 2015-02-24 16:00:11 · 4664 阅读 · 0 评论 -
[经典面试题][字典树]字符串唯一前缀问题
题目一个文件里面有如下字符串 cartefdxh cart carlkijfwe chdfwef cafkekfld …………要从文件中找出唯一能代表该字符串的前缀,然后如下输出 cartefdxh carte cart cart carlkijfwe carl chdfwef ch cafkekfld caf以空格分隔…….思路用Trie树实现。为每个节点增加一个变量coun原创 2015-02-26 17:13:32 · 3225 阅读 · 2 评论 -
[小米]2015小米校招之回文数判断
【题目】 大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串,比如“上海自来水来自海上”就是一个回文串。现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高。c++: bool isPalindromeNumber(long num);java: boolean isPalindromeN原创 2014-10-21 20:36:02 · 2428 阅读 · 0 评论 -
[百度]2014百度校园招聘之最长回文串
【题目】给你一个字符串,找出该字符串中对称的子字符串的最大长度。即q【代码】原创 2014-10-22 09:53:06 · 2950 阅读 · 0 评论 -
[网易]字符串回文分割
【题目】将一个很长的字符串,分割成一段一段的子字符串,子字符串都是回文字符串。有回文字符串就输出最长的,没有回文就输出一个一个的字符。例如:habbafgh输出h,abba,f,g,h。【思路一】基于“最长回文子串算法”求出当前字符串的最长回文子串,就可以分成3部分a、最长回文子串left部分b、最长回文子串c、最长回文子串right部分然后分别原创 2014-10-22 15:14:17 · 3128 阅读 · 0 评论 -
[创新工场]2014创新工场校园招聘之回文串修复
【题目】所谓回文,就是正序和倒序遍历结果一样的字符串,比如'aba', 'abcdedcba'。实现一个方法pal(),输入一个字符串,打印出以这个字符串为前缀的一个回文。比如输入'abc',pal()方法打印出'abcdcba'或'abcba';输入'abcb',可以输出'abcbcba'或'abcba'。如果可能,输出尽量短的结果。【思路一】 以abcdc为例,以此为前缀的回原创 2014-10-28 21:00:06 · 1763 阅读 · 0 评论 -
[经典面试题]在O(1)时间删除链表结点
【题目】给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode{ int value; struct ListNode* next;};函数的声明如下:void DeleteNode(ListNode* head,ListNode* node);原创 2014-10-29 12:02:33 · 2152 阅读 · 0 评论 -
[经典面试题]求解集合A与B的差集
【题目】已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。结构体:struct ListNode{ int val; ListNode *next;};原创 2014-12-12 16:51:35 · 1962 阅读 · 0 评论 -
[经典面试题][腾讯]字符串匹配
假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。要求高效。原创 2015-02-14 11:03:43 · 3149 阅读 · 2 评论 -
[经典面试题]完美洗牌算法
题目有个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后{a1,b1,a2,b2,….,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法。来源2013年UC的校招笔试题思路一第①步、确定b1的位置,即让b1跟它前面的a2,a3,a4交换:a1,b1,a2,a3,a4,b2,b3,b4第②步、接着确定b2的位置,即让b2跟它前面的a3,a4交原创 2015-02-13 16:08:08 · 12906 阅读 · 2 评论 -
[经典面试题]排列组合专题
[LeetCode]31.NextPermutation[LeetCode]46.Permutations[LeetCode]47.Permutations IISTL系列之十 全排列(百度迅雷笔试题)[LeetCode]77.Combinations[LeetCode]39.Combination Sum[LeetCode]40.Combination Sum II[LeetCode原创 2015-02-28 18:11:57 · 4576 阅读 · 0 评论 -
[经典面试题][腾讯]集合差集
【题目】A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。【来源】腾讯2014校招软件开发笔试题目【思路一】对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN))。设置两个指针p和q,同时指向集合A和集合B的第一个元素(已经升序排序)。用一个容器vector记录集合的交集。如果两个元素大小相等的,说明是集合交集元素,加入交集vector原创 2015-02-03 18:15:23 · 2187 阅读 · 0 评论 -
[经典面试题][网易]数组分割
【题目】任意2N个正整数,从其中选出N个整数,使得选出的N个整数和同剩下的N个整数之和的差最小。【来源】网易【分析】假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略。从2N个数中找N个元素,有三种可能:大于Sum/2,小于Sum/2以及等于Sum/2。而大于Sum/2与小于等于Sum/2没区别,故可以只考虑小于等于Sum/2的情况。令S(原创 2015-02-01 12:08:55 · 2917 阅读 · 2 评论 -
[经典面试题]二叉树宽度
(1)二叉树最大宽度 /*--------------------------------------------- * 日期:2015-03-07 * 作者:SJF0115 * 题目: 二叉树的最大宽度 * 来源:经典面试题 * 博客: --------------------------------------------原创 2015-03-07 10:51:17 · 2333 阅读 · 0 评论 -
[经典面试题][去哪网]合并日期
声明一个大小为1001的数组array[1001],全部初始化为0 然后从前向后遍历数组,先处理[0,100,300]再处理[40,50,350]。后面的价格覆盖前面的价格。原创 2015-04-12 19:44:29 · 1724 阅读 · 0 评论 -
[经典面试题][百度]c++实现STL中的string类
题目请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。代码/*-------------------------------------* 日期:2015-03-31* 作者:SJF0115* 题目: 实现string类* 来源:百度* 博客:-------------------------------原创 2015-03-31 22:41:43 · 3270 阅读 · 0 评论 -
[经典面试题][百度]电话号码对应英语单词
题目现在有一个手机,手机上的键盘上有这样的对应关系,2对应”abc”,3对应”def”…..手机里面有一个userlist用户列表,当我们输入942的时候出来拼音的对应可能是“xia”,“zha”,“xi”,“yi”等,当我们输入9264的时候出来是yang,可能是“样”,“杨”,“往”等,现在我们输入一个字符串数字,比如926等,要在电话簿userlist中查找出对应的用户名和电话号码并返回结果。原创 2015-03-30 20:46:19 · 2325 阅读 · 0 评论 -
[经典面试题]字符串编辑距离
题目给定一个源串和目标串,能够对源串进行如下操作: 1.在给定位置上插入一个字符 2.替换任意字符 3.删除任意字符 写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。思路如果有两个串 A = xabcdae 和 B = xfdfa,它们的第一个字符是相同的,只要计算A[2…7] = abcdae 和 B[2…5] = fdfa的距离就可以了。原创 2015-02-16 17:54:42 · 5151 阅读 · 0 评论 -
[经典面试题][腾讯]选择原料工厂(最短距离问题)
题目12个工厂分布在一条东西向高速公路的两侧,工厂距离公路最西端的距离分别是0、4、5、10、12、18、27、30、31、38、39、47。在这12个工厂中选取3个原料供应厂,使得剩余工厂到最近的原料供应厂距离之和最短,问应该选哪三个厂 ? 来源腾讯 盛大思路(1)这是一维问题,不是二维,可以抽象成:有12个点分布在一维坐标轴上,选择3个点,使得剩余的点到最近的点的距离之和最小。(2)工厂距离是从原创 2015-03-02 11:34:31 · 2156 阅读 · 0 评论 -
[经典面试题]最长01子串
【题目】给定一个数组,数组中只包含0和1。请找到一个最长的子序列,其中0和1的数量是相同的。例1:10101010 结果就是其本身。例2:1101000 结果是110100【解析】这个题目,看起来比较简单,一些同学可能认为题目的描述符合动态规划的特征,然后就开始用动态规划解,努力找状态转移方程。这些同学的感觉,是很正确的。但找状态转移方程原创 2014-12-16 10:36:59 · 10304 阅读 · 1 评论 -
[经典面试题]k节点一组旋转链表
【题目】给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6。如果节点的数量是不k的倍数则最终留出节点应该保持原样,每K个一反转,不到k个不用反转。用程序实现。------美团校招来自LeetCode :Reverse Nodes in k-Grou原创 2014-12-16 11:35:41 · 2089 阅读 · 0 评论 -
[经典面试题][淘宝]求首尾相连数组的最大子数组和
给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0],…,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选)。原创 2015-02-20 21:16:29 · 2338 阅读 · 2 评论 -
[经典面试题][百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数。
数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。原创 2015-02-19 12:41:43 · 2587 阅读 · 0 评论 -
[经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。
题目数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。原创 2015-02-08 11:21:52 · 4658 阅读 · 1 评论 -
[经典面试题][百度]求比指定数大且最小的“不重复数”
【题目】给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。【来源】2014年百度校招笔试题【思路一:暴力】数值加一,判断是否是重复数,如果是,继续加一判断,直到找到一个不是重复数的。【代码一】 /*-------------------------------------原创 2015-02-05 16:55:23 · 1828 阅读 · 0 评论 -
[经典面试题]二分查找问题汇总
【题目】给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target,不存在则返回-1。【分析】此题也就是求target在数组中第一次出现的位置。这里可能会有人想先直接用原始的二分查找,如果不存在直接返回-1,如果存在,然后再顺序找到这个等于target值区间的最左位置,这样的话,最坏情况下的复杂度就是O(n)了,没有完全发挥出二分查找的优势。这里的原创 2015-01-05 12:16:09 · 8105 阅读 · 1 评论 -
[经典面试题]蛇形矩阵(螺旋矩阵)
【1.打印蛇形矩阵】Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.For example,Given the following matrix:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [原创 2015-02-05 11:04:31 · 4316 阅读 · 0 评论 -
[经典面试题]实现memcpy库函数
【题目】已知memcpy的函数为: void* memcpy(void *dst , const void* src , size_t count)其中dst是目的指针,src是源指针。不调用c++/c的memcpy库函数,请编写memcpy。【解析】1 按照ANSI(American National Standards Institute)标准,不能对void指针进行算法操原创 2014-12-11 23:11:32 · 6306 阅读 · 2 评论 -
[经典面试题][百度]在由N个正整数的集合S中,找出最大元素C,满足C=A + B
【题目】在由N个正整数的集合S中,找出最大元素C,满足C=A + B 其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析。【分析】1,对集合S进行排序(快排),从小到大排序2,让C指向集合最后一个元素(最大元素)3,让i指向S中第一个元素,让j指向C的前一个元素4,如果,A[i]+A[j]==C则return C;5,如果if(A[i]+A[j]6原创 2015-01-30 14:12:05 · 3548 阅读 · 1 评论 -
[经典面试题][百度]寻找兄弟单词
题目一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程。思路一 兄弟单词必须满足字符相同,相同字符个数也必须相同。基于这点用Hash实现: (1)申请一个int数组 count[26]用来统计每个字符出现的次数。 (2)扫描字典中的单词,只考虑长度和给出单词长度一样大小的单词(长度不同肯定不是兄弟单词),用br原创 2015-02-22 10:19:09 · 2530 阅读 · 0 评论 -
[经典面试题][谷歌]一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素
题目一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。思路一寻找重复元素,很容易想到建立哈希表来完成,遍历一遍数组就可以将每个元素映射到哈希表中。如果哈希表中已经存在这个元素则说明这就是个重复元素。这种方法可以很方便的在O(n)时间内完成对重复元素的查找。可是题目要求在O(1)的空间。因此采用哈希表这种解法肯定在空间复杂原创 2015-02-19 21:07:15 · 3867 阅读 · 0 评论 -
[经典面试题][暴风影音]暴风影音2014校招笔试题
合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个如:单链表a:1->2->3->4 单链表b:3->4->5 输出:1->2->3->4->5具体参考:[LeetCode]21.Merge Two Sorted Lists /*--------------------------------------------- * 日期:2015-02-23 *原创 2015-02-23 10:31:38 · 2495 阅读 · 0 评论 -
[经典面试题]二叉树专题
经典白话算法之二叉树各种遍历经典白话算法之二叉树中序前序序列(或后序)求解树[程序员面试题精选100题]1.把二叉查找树转变成排序的双向链表[程序员面试题精选100题]4.二叉树中和为某一值的所有路径[LeetCode]Recover Binary Search Tree[LeetCode]Binary Tree Zigzag Level O原创 2014-12-20 15:47:22 · 1569 阅读 · 0 评论 -
[经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
【题目】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。【分析】这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我们应该能找到更原创 2015-01-04 23:14:21 · 1933 阅读 · 0 评论 -
[经典面试题]统计数组
【题目】给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么?【分析】我们知道原数组是没有排序的。如果排序了,很简单的。O(1)的空间含义,可以使用变量,但不能开辟数组或者map等来计数。这个题目,很直接的解法就是两层原创 2014-09-22 11:35:11 · 2143 阅读 · 0 评论 -
[经典面试题]将字符串里的小写字母转换成大写的。 要求不通过比较
【题目】将字符串里的小写字母转换成大写的。 要求不通过比较【思路】a~z的ascii码:97~122 也就是:1100001~1111010A~Z的ascii码:65~90 也就是: 1000001~1011010通过判断从低位数第五位是否是0,1而得到是小写字母还是大写字母【代码】/*************************原创 2014-11-21 20:13:06 · 2807 阅读 · 0 评论 -
[经典面试题]给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数
【题目】给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数【分析】1.对于给定的N,我们可以用筛法求素素数的方法在O(n)的时间复杂度内求出所有的素数。2.除2之外,所有的素数相加都为偶数,所以求出6~N之间的素数,打印两两的和就可以,时间复杂度O(n^2)【代码】#include #include #include using name原创 2014-12-10 18:16:55 · 2542 阅读 · 0 评论 -
[经典面试题]最大连续乘积
题目给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积3*0.5*8=12是最大的,而且是连续的。分析最大乘积连续子串与最大乘积子序列不同,前者子串要求连续,后者子序列不要求连续。初看此题,自然会想到最大连续乘积问题类似于最大子数组和问题思路一 穷举法穷举子串的起点和终点原创 2015-02-15 12:26:36 · 2104 阅读 · 0 评论 -
[经典面试题]子数组的最大乘积
题目给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中的最大的一组,并写出算法的时间复杂度。思路一 穷举法我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N^2),但显然这不是最好的思路。思路二 空间换时间计算(N-1)个数的组合乘积,假设第i个(0<=i<=N-1)元素被排除在原创 2015-02-15 15:35:32 · 4984 阅读 · 3 评论