面试
文章平均质量分 69
zhifeng687
这个作者很懒,什么都没留下…
展开
-
LeetCode上出现频率最高的50道数据库题目
NO.2 简单 (176. 第二高的薪水)力扣# 将第一高的工资筛选掉,再次用MAX就可以取到第二高的工资了。select max(Salary) as SecondHighestSalary from Employeewhere Salary <>(select max(Salary) from Employee)NO.3 中等 (184. 部门工资最高的员工)力扣# 先用group by的方法求出部门最高薪资,再接着判断Employee表中哪些数.转载 2016-08-04 14:39:19 · 12214 阅读 · 0 评论 -
大量数据去重:Bitmap和布隆过滤器(Bloom Filter)
在面试时遇到的问题,问题的解决方案十分典型,但对于海量数据处理接触少的同学可能一时也想不到什么好方案。介绍两个算法,对于空间的利用到达了一种极致,那就是Bitmap和布隆过滤器(Bloom Filter)。Bitmap算法在网上并没有找到Bitmap算法的中文翻译,在《编程珠玑》中有提及。与其说是算法,不如说是一种紧凑的数据存储结构。其实如果并非如此大量的数据,有很多排重方案可以使用,典型的就是哈希表。public int[] removeDuplicates(int[] array) { ..转载 2022-04-07 20:24:44 · 1942 阅读 · 0 评论 -
BitMap的JAVA实现
相关概念基础类型在java中: byte -> 8 bits -->1字节char -> 16 bit -->2字节short -> 16 bits -->2字节int -> 32 bits -->4字节float -> 32 bits -->4字节long -> 64 bits -->8字节 位运算符在java中,int数据底层以补码形式存储。int转载 2022-04-07 19:31:37 · 2937 阅读 · 1 评论 -
二叉树中的最大路径和(转化)
首先,考虑实现一个简化的函数 maxGain(node),该函数计算二叉树中的一个节点的最大贡献值,具体而言,就是在以该节点为根节点的子树中寻找以该节点为起点的一条路径,使得该路径上的节点值之和最大。具体而言,该函数的计算如下。空节点的最大贡献值等于 00。非空节点的最大路径和等于节点值与其子节点中的最大贡献值之和(对于叶节点而言,最大贡献值等于节点值)。例如,考虑如下二叉树。 -10 / \ 9 20 / \ 15 7叶节点 99、1515、7...转载 2016-09-01 11:13:57 · 1150 阅读 · 0 评论 -
二叉树中和为某一值的路径(回溯法:先序遍历+栈记录路径+目标值更新)
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:对于树的遍历一般就是深度遍历和广度遍历下四种中的一种,从根节点往下找到叶节点形成一条路径,若是和为给定的值这个路径便是需要找的路径,从根节点到叶节点边访问边相加判断可以采用前序遍历。(1)若根节点的值大于给定的值或者根节点为空,则清空路径;(1)若根节点的值等于给定的值,需要判断当前节点是否为叶子节点,若为叶子节点,则是需要找的一条路径,若不是,将转载 2017-02-21 21:16:36 · 440 阅读 · 0 评论 -
最小覆盖子串(滑动窗口思想+map结构判断窗口是否包含所有元素)
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).Example:Input: S = "ADOBECODEBANC", T = "ABC"Output: "BANC"题解滑动窗口的思想:用i,j表示滑动窗口的左边界和右边界,通过改变i,j来扩展和收缩滑动窗口,可以想象成一个窗口在字符串上游走转载 2017-02-24 17:05:50 · 453 阅读 · 0 评论 -
和为K的子数组(前缀和思想)
题目描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。引入前缀和前缀和 定义:nums 的第 0 项到 当前项 的和。用一个数组 prefixSum 表示,prefixSum[x]:第转载 2017-02-22 13:55:43 · 851 阅读 · 0 评论 -
双指针扩张法+排列组合解抓捕孔连顺
题目描述:我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议1. 我们在字节跳动大街的N个建筑中选定3个埋伏地点。2. 为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在cosplay的队伍中逃出了字节跳动大街。只怪他的伪装太成功了,..转载 2017-01-18 16:51:57 · 416 阅读 · 0 评论 -
排列组合公式及排列组合算法
排列组合公式排列组合公式/排列组合计算公式公式P是指排列,从N个元素取M个进行排列。公式C是指组合,从N个元素取M个进行组合,不进行排列。N-元素的总个数M参与选择的元素个数!-阶乘,如9!=9*8*7*6*5*4*3*2*1从N到数M个,表达式应该为n*(n-1)*(n-2)..(n-m+1);因为从n到(n-m+1)个数为n-(n-m+1)=m举例:Q1:有从1到9共计9个号码球,请问,可以组成多少个三位数?A1:123和213是两个不同的排列数。即.转载 2017-02-17 21:05:37 · 4636 阅读 · 0 评论 -
合并区间
题目给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路首先根据数组中的第一个数字进行排序,[1,3][2,6][8,10]中的就是1,2,8根据这三个数字对二维转载 2017-02-09 10:13:33 · 324 阅读 · 0 评论 -
双指针技巧总结
我把双指针技巧再分为两类,一类是「快慢指针」,一类是「左右指针」。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。一、快慢指针的常见算法快慢指针一般都初始化指向链表的头结点 head,前进时快指针 fast 在前,慢指针 slow 在后,巧妙解决一些链表中的问题。1、判定链表中是否含有环这应该属于链表最基本的操作了,如果读者已经知道这个技巧,可以跳过。单链表的特点是每个节点只知道下一个节点,所以一个指针的话...转载 2017-02-09 14:13:21 · 523 阅读 · 0 评论 -
漫画算法题:两数之和与三数之和
来自公众号:程序员小灰前一段时间,小灰分别讲解了两道leecode上的经典算法题:漫画:如何在数组中找到和为 “特定值” 的两个数?漫画:如何在数组中找到和为 “特定值” 的三个数?今天,小灰把这两道题整合起来,并修改了其中的细节问题,感谢大家的指正。————— 第二天 —————什么意思呢?我们来举个例子,给定下面这样一个整型数组(假定数组不存在重复元素):我们随意选择一个特定值,比如13,要求找出...转载 2017-02-27 22:00:36 · 403 阅读 · 0 评论 -
归并排序合并K个升序链表
题目描述对于数列a1,a2,a3…中的任意两个数ai,aj (i< j),如果ai > aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。输入输入数据N(N转载 2017-04-05 21:11:22 · 1057 阅读 · 0 评论 -
网易2017实习笔试题-CPU双核调度问题(动态规划解决)
题目的大概意思:一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间。 输入包括两行:第一行为整数n(1 ≤ n ≤ 50)第二行为n个整数leng转载 2017-04-05 20:30:11 · 1915 阅读 · 0 评论 -
背包问题变种:将数组分成两部分使得两部分的和的差最小
题目: 将一个数组分成两部分,不要求两部分所包含的元素个数相等,要求使得这两个部分的和的差值最小。比如对于数组{1,0,1,7,2,4},可以分成{1,0,1,2,4}和{7},使得这两部分的差值最小。思路:差最小就是说两部分的和最接近,而且和所有数的和SUM的一半也是最接近的。假设用sum1表示第一部分的和,sum2表示第二部分的和,SUM表示所有数的和,那么sum1+sum2=SUM。...原创 2017-04-05 20:26:57 · 12044 阅读 · 5 评论 -
0-1背包问题
简介 背包问题已经是一个很经典而且讨论很广泛的算法问题了。最近学习到这一部分,打算结合自己思考和编码的过程做一个思考总结。这里主要讨论的0-1背包问题和部分背包问题解决方法背后其实隐藏了两种我们比较常见的算法解决思路,动态规划和贪婪算法。正好通过这两个问题的讨论可以好好的加深一下理解。 问题描述 假设我们有n件物品,分别编号为1, 2...n。其中编号为转载 2017-04-05 12:52:45 · 502 阅读 · 0 评论 -
随机播放音乐 腾讯校招笔试题
如何实现一个随机播放音乐,要求能够方便查看上一首播放的是什么,方便交换即将播放的歌曲顺序提示:先对歌曲编号为0~999(比如有1000首歌),用洗牌算法(不懂的请自行百度)将序号顺序打乱,之后开始播放,这样播放中用户可以对歌曲再次调整顺序,调整时同步调整序号。[腾讯校招]如何实现一个随机播放音乐,要求能够方便查看上一首播放的是什么方便交换即将播放的转载 2017-04-04 23:50:51 · 1859 阅读 · 0 评论 -
2016网易校招——比较重量(图的广度优先搜索)
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请转载 2017-04-04 16:11:58 · 319 阅读 · 0 评论 -
找出最长连续数字串
请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!样例输入abcd12345ed125ss123058789abcd12345ss54761样例输出输出123058...原创 2017-03-25 14:23:21 · 845 阅读 · 0 评论 -
微信红包(2016腾讯校招笔试题)
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。没找到,返回0。 Boyed moore voting algorithm.扫描转载 2017-04-04 16:04:26 · 513 阅读 · 0 评论 -
剑指offer 面试题36:数组中的逆序对
题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,有一个数组为Array[0..n] 其中有元素a[i],a[j].如果 当ia[j],那么我们就称(a[i],a[j])为一个逆序对。在数组{7,5,6,4}中一共存在5对逆序对,分别是(7,6),(7,5),(7,4),(6,4),(5,4)。参考文献转载 2017-04-05 21:18:10 · 261 阅读 · 0 评论 -
腾讯2017年春季笔试 求基因碱基的逆序数
题目描述:已知碱基序列ACGT为正序。求任意碱基序列的逆序数。要求算法的时间复杂度为O(n)。举例:一序列为AGTCTCG,则其逆序数为7。[cpp] view plain copy #include using namespace std; int reverse_order_n转载 2017-04-05 21:23:07 · 387 阅读 · 0 评论 -
网易2017校园招聘笔试题 回文序列
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。 现在给出一个数字序列,允许使用一种转换操作: 选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两转载 2017-03-07 10:03:47 · 823 阅读 · 0 评论 -
删除字符构造最长回文字符串(求最长公共子序列的变种)
题目给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数输入描述输入数据有多组,每组包含一个字符串s,且保证:1输出描述对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子abcdagoogle输出例子22原创 2017-03-24 14:55:44 · 831 阅读 · 0 评论 -
快速排序理解(挖坑填数策略)
left < right这个条件需要考虑,否则会出现栈溢出 // 这是因为当left > right时,很明显while条件不符合,但是递归quickSort(arr, left, i -1);还是会走//然后一直走递归,就会出现栈溢出转载 2017-04-06 10:54:16 · 680 阅读 · 0 评论 -
【leetcode】31. Next Permutation 数字序列的所有组合中比给定串大的下一个最小的串
1. 题目Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest转载 2017-04-19 15:08:41 · 1658 阅读 · 0 评论 -
Longest Increasing Subsequence最长递增子序列(动态规划+二分查找)
Given an unsorted array of integers, find the length of longest increasing subsequence.For example,Given [10, 9, 2, 5, 3, 7, 101, 18],The longest increasing subsequence is [2, 3, 7, 101], th原创 2017-03-07 18:44:21 · 1424 阅读 · 0 评论 -
Maximum Subarray连续子序列最大和-动态规划之和的局部最优和全局最优
原题链接:http://oj.leetcode.com/problems/maximum-subarray/这是一道非常经典的动态规划的题目,用到的思路我们在别的动态规划题目中也很常用,以后我们称为”局部最优和全局最优解法“。基本思路是这样的,在每一步,我们维护两个变量,一个是全局最优,就是到当前元素为止最优的解是,一个是局部最优,就是必须包含当前元素的最优的解。接下来说说动态规划的递转载 2017-03-11 18:08:20 · 1185 阅读 · 0 评论 -
最长公共子字符串
对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。测试样例:"1AB2345CD","12345EF"返回:4思路:使用动态规划算法,创建二维矩阵:二维矩阵的长宽,分别是2个字符串str1和str2的长度加一; 二维矩阵的第0列和第0行,都初始化为0;matrix[i][j]的定义是:以str1[ i ]和s...原创 2017-03-11 18:09:29 · 370 阅读 · 0 评论 -
跳台阶问题
本文来自编程之法:面试和算法心得https://wizardforcel.gitbooks.io/the-art-of-programming-by-july/content/02.05.html题目描述一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。求总共有多少总跳法,并分析算法的时间复杂度。分析与解法解法一首先考虑最简单的情况。如果只有1级台阶,那显然只转载 2017-03-20 11:10:56 · 292 阅读 · 0 评论 -
Moore's voting algorithm
最近在刷LeetCode的题的时候,发现一个特别巧妙的算法:Moore’s voting algorithm。这个算法是解决这样一个问题:从一个数组中找出出现半数以上的元素。Moore的主页上有这个算法的介绍:A Linear Time Majority Vote Algorithm和这个算法的一个简单示例演示:演示链接。算法的基本思想每次都找出一对不同转载 2017-04-04 16:00:57 · 252 阅读 · 0 评论 -
2017腾讯校招模拟题----环形蛇形矩阵
1 2 3 4 5 6 7 8 9 10 36 37 38 39 40 41 42 43 44 11 35 64 65 66 67 68 69 70 45 12 34 63 84 85 86 87 88 71 46 13 33 62 83 96 97 98 89 72 47 14 32 61 82 95100 99 90 73 48 15 31 60 81 94 93 92转载 2017-03-26 16:19:15 · 594 阅读 · 0 评论 -
双指针Remove Element和Remove Duplicates from Sorted Array
双指针是一种思想,这里的指针不要单纯理解为*...只是一种定位的意思....双指针可以是快慢指针,比如这两个,也可以是分别在前后的,恩,这种也还没遇到.....这里的两道题都是快慢的指针,比如Remove Duplicates from Sorted Array,去掉重复的元素,一个用来遍历,就是走的快的,还有一个是指向当前的更新的位置,如果快指针是新元素,慢指针就更新然后往前移一转载 2017-03-13 14:09:12 · 254 阅读 · 0 评论 -
字符串问题
摘自http://www.epubit.com.cn/book/onlinechapter/33918第1章 字符串编程之法:面试和算法心得与字符串相关的问题在各大互联网公司的笔试和面试中出现的频率极高。例如,网上广为流传的一道单词翻转题:输入“I am a student.”,要求输出“student. a am I”。本章重点介绍6个典型的字符串转载 2017-03-13 10:53:38 · 3378 阅读 · 0 评论 -
算法总结--数组相关】双指针法的常见应用
所谓双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行扫描,从而达到相应的目的。 换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。 (注:这里的指针,并非专指c中指针的概念,而是指索引,游标或指针,可迭代对象等) 这类算法包括: 1.给定一个有序递增数组,在数组中找到转载 2017-03-13 10:26:38 · 4610 阅读 · 0 评论 -
最长连续序列(局部最优、全局最优+MAP)
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。分析由于O(n)时间复杂度的限制,我们就不能采取先排序后遍历的思路。针对O(n)时间复杂度的实现思路:遍历nums[]数组,利用Map存储元素nums[i]的值以及其所在连续序列的长度,此时基本只有两种情况:数组中出现过元素nums[i]-1或nums[i]+.转载 2017-03-12 23:27:06 · 351 阅读 · 0 评论 -
字典序排列和字符右移
给定整数n和m,将1到n的这n个整数按字典序排列之后,求其中的第m个数字。对于n = 11,m = 4,按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9,因此第4个数字为2。输入输入仅包含两个整数n和m。输出输出仅包括一行,即所求排列中的第m个数字。样例输入11 4样例输出2Hint数据范围对于20原创 2017-03-28 17:30:41 · 491 阅读 · 0 评论 -
最大不重复子串长度
题目Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer转载 2017-03-05 17:23:22 · 874 阅读 · 0 评论 -
小易喜欢的单词
摘自牛客网:题目:小易喜欢的单词具有以下特性: 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。例如: 小易不喜欢”ABBA”,因为这里有两个连续的’B’ 小易不喜欢”THETXH”,因为这里包含子序列”THTH” 小易不喜欢”AB转载 2017-03-06 17:20:00 · 1298 阅读 · 1 评论 -
归并排序
参考youtube视频:https://www.youtube.com/watch?v=lIRbkcK7AjI&index=9&list=PLh7EcZj1_V0BWlId6sPG-asnmpY0EGMM4时间复杂度:O(nlog2n)转载 2017-03-06 00:15:33 · 185 阅读 · 0 评论