自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 春招一次上岸,阿里/字节/华为/腾讯…互联网大厂面试题总汇!

顺利拿到鹅厂offer!!之前备战秋招时去搜刮了很多资源,现在来回馈下大家,分享一下我整理的资料,里面包括21年各大互联网大厂的岗位,笔面试题目,面经汇总,希望大家都能顺利上岸~私信回复【上岸】可以拿到我无偿分享全春招备考资料礼包!...

2021-01-14 16:36:59 492

原创 LintCode 题解 | Google 面试题:Minimum Cycle Section

题目描述给出一个int的数组 array, 求这个数组的最小循环节的长度。思路点拨可以考虑使用双指针(L,R),并开一个变量记录len当前的循环节,由于循环节肯定是从第一位开始,所以用L记录当前匹配到的位置,R一直往后移动,如果当前位不匹配,那么L就重置,len就加1。整体复杂度O(n) 。考点分析这题是双指针类型的变形,如果发现了循环节每次都是从第一个数开始这一个性质,那么就可以根据这...

2019-08-14 09:26:03 175

原创 LintCode 题解 | Google 面试题:Minimum Cycle Section

题目描述给出一个int的数组 array, 求这个数组的最小循环节的长度。思路点拨可以考虑使用双指针(L,R),并开一个变量记录len当前的循环节,由于循环节肯定是从第一位开始,所以用L记录当前匹配到的位置,R一直往后移动,如果当前位不匹配,那么L就重置,len就加1。整体复杂度O(n) 。考点分析这题是双指针类型的变形,如果发现了循环节每次都是从第一个数开始这一个性质,那么就可以根据这...

2019-08-13 09:31:02 323

原创 LintCode 题解 | Amazon 面试题:Log Sorting

题目描述给一个日志,由List< String >组成,每个元素代表一行日志。每行日志的信息用一个空格分开。最前面的是日志的ID,后面是日志的内容,内容要么是全部由字母和空格组成,要么是全部由数字和空格组成。现在将日志进行排序,要求字母内容按照内容字典序排序放在顶部,数字内容放到底部且按照输入顺序输出。(注意,空格也属于内容,并且当字母内容字典序相等时,按照日志ID字典序排序,保证I...

2019-08-13 09:28:06 264

原创 LintCode 题解 | Amazon 面试题:Find Substring

题目描述给定长度k,找出字符串str里面所有长为k的子串。子串的字符不能重复,输出满足这样条件的子串数量(子串相同的只算1个)。思路点拨用双指针可以将所有的满足条件的子串找出来,在去重方面可以采用字符串hash,也可以直接HashMap或者HashSet去重。考点分析本题主要考察双指针,仔细分析一下,字符全是小写字母,所有有效的字符串最多长度为26, 当k>26时直接输出0,k&l...

2019-08-09 09:55:51 351

原创 LintCode 题解 | Facebook 面试题:Digital Coverage

题目描述给出一些区间,问覆盖次数最多的数是多少,如果有多个,输出最小的那个数。思路点拨由于只查询一次,故可以使用前缀和的方式来记录区间的覆盖范围,然后O(n)扫一次,整体复杂度O(n)。考点分析本题用到一个小技巧,对于一段区间[start, end]加上一个数c,可以f[start] += c, f[end + 1] -= c, 这样再求前缀和,就能达到想要的效果。九章参考程序htt...

2019-08-08 09:44:11 147

原创 LintCode 题解 | Facebook 面试题:Set Union

题目描述有一个集合组成的list,如果有两个集合有相同的元素,将他们合并。返回最后还剩下几个集合。思路点拨先遍历所有元素,以元素为key,元素所属的集合id为value(是一个集合)建立hashmap,再对于每一个元素,使用并查集将它所属的所有集合合并。最后剩下的就是答案。考点分析本题考察了做题者的思维能力,朴素的合并显然会超时,需要对每个集合的元素做一个映射,然后遍历每个集合的元素,每...

2019-08-07 09:29:23 140

原创 LintCode 题解 | Facebook 面试题:The Barycentre of The Trees

题目描述对于一棵多叉树,如果有一个结点 R,以R为根,其所有子树的最大子树的结点数最少,则称结点 R 为这棵树的重心。现在给你一棵有 n 个结点的多叉树,求这棵树的重心,如果有多个重心,则返回编号最小的。x[i], y[i]代表第 i 条边的两个点。思路点拨随意选择一个点作为树的根节点,比如 1 结点。dp[i] 代表以 i 为根的子树的结点个数。dp[i] = sum(dp[j]) + 1...

2019-08-06 09:54:52 183

原创 LintCode 题解 |Google 面试题:Twitch Words

题目描述我们正常的单词不会有连续两个以上相同的字母,如果出现连续三个或以上的字母,那么这是一个抽搐词。现在给一个单词,从左至右求出所有抽搐字母的起始点和结束点。思路点拨遍历一遍字符串,找到长度大于等于三的相同字母子串,记录起始点。考点分析简单的热身题,有一个小细节,快速的做完并且bugfree会让面试官眼睛一亮。九章参考程序https://www.jiuzhang.com/solut...

2019-08-06 09:48:04 156

原创 LintCode 题解 |Google 面试题:Recommend Friends

题目描述给n个人的朋友名单,告诉你user,请找出user最可能认识的人。(他和user有最多的共同好友且他不是user的朋友)。思路点拨对于user的好友关系,建立一个hashmap存储。对于所有不是user好友的人,求出他和user的共同好友数,维护最大共同好友数的那个id。考点分析对于取两个人的共同朋友,稍微思考一下,即可想到对user的朋友列表采用数据结构存储,然后遍历其他人的朋...

2019-08-02 09:55:21 257

原创 LintCode 题解 |Google 面试题:Take Coins

题目描述有n个硬币排成一排,每次要你从最左边或者最右侧拿出一个硬币。总共拿k次。写一个算法,使能拿到的硬币的和最大。思路点拨将list的前缀和求出来,然后依次枚举右边取x个,那么剩下就是左边去k - x个,用前缀和可以O(1)算出答案,所以整体复杂度为O(n)。考点分析想清楚后可以发现不管每次从左边还是右边拿,最后从左边拿的个数和从右边拿的个数是确定的,那么我们可以通过双指针或者前缀和+...

2019-08-01 11:29:29 807

原创 LintCode 题解 |Google 面试题:Fermat Point of Graphs

题目描述有一个无向无环连通图,每条边通过两个顶点x[i],y[i]来描述,每条边的长度通过d[i]来描述。求这样的一个点p,使得其他点到p的距离和最小,如果有多个这样的点p,返回编号最小的。思路点拨dp[i] 代表以 i 为根的子树中的结点到 i 结点的距离和,dp[i] = sum(dp[j] + np[j] * d(i, j)),np[i] 代表以 i 为根的子树的所有结点的个数,np[...

2019-07-31 09:33:00 189

原创 LintCode 题解 |Microsoft 面试题:Matrix Water Injection

题目描述给一个二维矩阵,每个grid的值代表地势的高度。水流只会沿上下左右流动,且必须从地势高的地方流向地势低的地方。视为矩阵四面环水,现在从(R,C)处注水,问水能否流到矩阵外面去?思路点拨从(R,C)开始DFS,看是否能碰到边界。返回YES或者NO。考点分析简单的热身搜索,一定要做到bugfree,注意水是从高处向低处流动九章参考程序http://www.jiuzhang.com...

2019-07-30 09:17:23 89

原创 LintCode 题解 |Microsoft 面试题:Maximum Product Path

题目描述一棵有 n 个结点,根结点为 1 的二叉树,每条边通过两个顶点x[i],y[i]来描述,每个点的权值通过d[i]来描述。求从根结点到叶子结点路径上所有结点权值乘积对1e9+7取模后最大的路径的值。思路点拨从根开始遍历,统计每个到根节点取模后的答案,取最大即可。考点分析本题考查的是树的遍历,相信大家都会判断是否是叶节点,不过这里有个坑点就是取的是取模后的最大值,在取模时,由于有负数...

2019-07-29 09:32:02 178

原创 LintCode 题解 |Microsoft 面试题:Matrix Finding Number

题目描述给出一个矩阵mat,找出所有行都出现的数字,如果有多个,就输出最小的那个数。如果没有,输出-1。思路点拨用hashmap维护每个数最后出现的行数,最后在扫一遍hashmap取最小即可。考点分析本题对每行去暴力寻找有哪些数出现,显然不可取。我们可以换一个思维,对每个数x维护该数最后出现的行数,如果遍历到第i行,发现x的最后出现的行数不是i-1,那么我们就可以舍去这个数了,最后遍历一...

2019-07-26 09:35:29 112

原创 LintCode 题解 |Microsoft 面试题:Gas Station ii

题目描述一辆汽车在一条笔直的道路上行驶,一开始有original单位的汽油。这条笔直的道路上有n个加油站,第i个加油站距离汽车出发位置的距离为distance[i]单位距离,可以给汽车加apply[i]单位汽油。汽车每行驶1单位距离会消耗1单位的汽油,假设汽车的油箱可以装无限多的汽油。目的地距离汽车出发位置的距离为target,请问汽车能否到达目的地,如果可以返回最少的加油次数,否则返回-1。...

2019-07-25 09:49:46 224

原创 LintCode 题解 |Twitter 面试题:Residual Product

题目描述输入为整数数组 arr,请你返回结果数组 ans,使得 ans[i] 为 arr 中除了 arr[i] 以外的所有数的乘积。思路点拨先计算总乘积,再进行除法,时间复杂度 O(n)。考点分析简单的热身题,算完总乘积后做除法就行了,做到bugfree即可。九章参考程序http://www.jiuzhang.com/solution/residual-product/?utm_so...

2019-07-24 14:23:13 127

原创 LintCode 题解 |Twitter 面试题:The Previous Number

题目描述给一个数组,对于每一个元素,找出它之前第一个比它小的元素的值。如果没有,则输出它本身。思路点拨维护一个单调递增的栈。对于元素i,判断栈顶是否满足条件,如果不满足,说明对于后面的元素j,i比栈顶更优。所以弹出栈顶,直到栈为空。然后把元素i放入栈中。复杂度O(n)。考点分析本题考查的是单调栈,满足条件的答案显然是满足单调性的,所以可以用一个栈来维护这个单调性,就可以O(n)解决问题了...

2019-07-23 09:46:01 133

原创 LintCode 题解 |Twitter 面试题:Tree

题目描述给出两个list x,y,代表x[i]与y[i]之间有一条边,整个边集构成一棵树,1为根。现在有个list a,b,表示询问节点a[i]与b[i]是什么关系,如果a[i]与b[i]是兄弟,即有同一个父节点,输出1,如果a[i]与b[i]是父子关系,输出2,否则输出0。思路点拨一次dfs将树的每个节点的father处理出来,并保存每个节点的儿子。考点分析本题考察了树遍历,一次树遍历...

2019-07-22 09:47:28 110

原创 LintCode 题解 |Twitter 面试题:Eat the Beans

题目描述一个袋子里有W个白豆子,R个红豆子。第一步: 随机摸一个豆子,摸到白豆子直接吃,摸到红豆子,放回去。第二步:随机再摸一豆子,不管是红是白,都吃。然后重复第一步和第二步,问最后一个豆子是白豆子的概率。思路点拨考虑dp[i][j]表示剩下i个白豆子,j个红豆子的概率,则根据题意有两种转移。考点分析dp[i][j]表示当前剩下i颗白豆子j颗红豆子的概率,dp[w][r] =1,由于第二...

2019-07-19 09:50:47 199

原创 LintCode 题解 |Hulu 面试题:Weighing Problem

题目描述给出 n 个金币,每个金币重 10g,但是有一个金币的重量是 11g。现在有一个能够精确称重的天平,问最少称几次,能够确保找出那一个重量 11g 的金币?思路点拨根据贪心的思想,每次尽可能大地缩小下次称量金币的个数。故每次可以将金币尽可能均匀地分成三份:若 n % 3 = 0,则分成 n/3、n/3、n/3,任意取两份进行比较。若 n % 3 = 1,则分成 n/3、n/3、 n/3...

2019-07-18 09:21:29 325

原创 LintCode 题解 |Hulu 面试题:Maximum Slope Straight Line

题目描述给出一系列平面直角坐标系中的整数点 (x, y),从 0 开始编号,第 i 个点的编号为 i。不存在任意两点的横坐标相同,找出能构成的最大斜率直线的两个点的编号 (a,b)。如果有多个这样的点对,返回字典序最小的点对。思路点拨无论多少个点都可以任意选三个点组成一个三角形,那么斜率最大的边肯定不是通过相邻的两个点,以此可知斜率最大的直线一点是由两个相邻的点画出的。考点分析本题主要考...

2019-07-17 09:07:22 166

原创 LintCode 题解 |Hulu 面试题:Print Organization Chart

题目描述按员工姓名,上一级姓名,职位,年份给出一系列企业中员工的关系,输出企业成员组织结构图。思路点拨按员工关系表建立一棵树,然后先序遍历这棵树,注意树的每一层要进行排序。考点分析本题主要考察了树的构造与树的遍历,首先根据每位员工上一级的信息构造出树结构,再对这颗树进行先序遍历,即可以得到答案,值得注意的是每一级员工要按名字的字典序进行排序。九章参考程序https://www.jiu...

2019-07-16 09:50:54 204

原创 LintCode 题解 |Hulu 面试题:Construction Queue

题目描述存在一个数列的某种排列。现在已知数列中每个数的大小 arr1 ,和每个数之前有多少个比它自身小的数 arr2,要求恢复出原来的排列。保证数列中的元素两两不等。思路点拨先将所有数按从大到小的顺序排列,然后从最大的开始插入到线段树中。对于区间 [l,mid],[mid,r]。满足[l,mid]中未被填充的数字比比它自身小的数的个数大,则继续搜索左区间,反之搜索右区间。填充,更新即可。时间...

2019-07-15 09:19:32 365

原创 LintCode 题解 |Google, Amazon, Uber同时考了它,你需要的题解来了

Google、Microsoft、Uber、Apple 同时考了这道题之后,收到大批反馈信息要求查看最优题解,秋招大门已经打开,你还在等什么?题目描述 两个已排好序的数组,找出两者合并后的数组的中位数Example 给出 A=[1,2,3,4,5,6] 和 B=[2,3,4,5],他们合并后的中位数是 3.5((3+4)/2) 给出 A=[1,2,3] 和 B=[4,5],他们合并后的中位数...

2019-07-12 09:25:19 108

原创 LintCode 题解 |亚马逊、微软热门题:目的地的最短路径

题目描述给定表示地图上坐标的2D数组,地图上只有值0,1,2.0表示可以通过,1表示不可通过,2表示目标位置。从坐标[0,0]开始,你只能上,下,左,右移动。找到可以到达目的地的最短路径,并返回路径的长度。(地图一定存在且不为空,并且只存在一个目的地)样例1输入:[ [0, 0, 0], [0, 0, 1], [0, 0, 2]]输出: 4说明: [0,0] -> [1...

2019-07-11 09:08:35 257

原创 LintCode 题解 | 阿里巴巴高频题:删除排序数组中的重复数字

LintCode 题解 | 阿里巴巴高频题:删除排序数组中的重复数字题目描述给定一个排序数组,在原数组中“删除”重复出现的数字,使得每个元素只出现一次,并且返回“新”数组的长度。不要使用额外的数组空间,必须在不使用额外空间的条件下原地完成。样例样例 1:输入: [] 输出: 0样例 2:输入: [1,1,2] 输出: 2 解释: 数字只出现一次的数组为: [1,2]题目解析由于...

2019-07-10 09:46:03 370

空空如也

空空如也

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

TA关注的人

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