E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
lintCode
LintCode
-k数和 II
给定n个不同的正整数,整数k(1>kSumII(vectorA,intk,inttarget){ //writeyourcodehere vectorcur; vector>ret; deal(A,0,k,target,0,cur,ret); returnret; } voiddeal(vector&A,intindex,intk,inttarget,intsum,vectorcur,vector
wangyuquanliuli
·
2015-06-24 23:00
面试
lintcode
LintCode
-简化路径
给定一个文档(Unix-style)的完全路径,请进行路径简化。您在真实的面试中是否遇到过这个题? Yes样例"/home/",=> "/home""/a/./b/../../c/",=> "/c"挑战你是否考虑了路径= "/../" 的情况?在这种情况下,你需返回"/"。此外,路径中也可能包含双斜杠'/',如 "/home//foo/"。在这种情况下,可忽略多余的斜杠,返回 "/home/foo
wangyuquanliuli
·
2015-06-24 22:00
面试
lintcode
LintCode
-寻找缺失的数
给出一个包含0.. N 中 N 个数的序列,找出0.. N 中没有出现在序列中的那个数。您在真实的面试中是否遇到过这个题? Yes样例N = 4 且序列为 [0,1,3] 时,缺失的数为2。注意可以改变序列中数的位置。挑战在数组上原地完成,使用O(1)的额外空间和O(N)的时间。分析:感觉题目描述的不清晰,看起来是说0-N序列中只少了一个数,从样例猜测。。。于是就靠这种序列的和瞎做了一番。。。代码
wangyuquanliuli
·
2015-06-24 19:00
lintcode
九章算法面试题76 搜索二维矩阵
在线测试本题http://www.
lintcode
.com/zh-cn/problem/search-a-2d-matrix/解答这道题虽然看似矩阵问题,其实最终
九章算法
·
2015-06-14 10:49
九章算法面试题
lintcode
1: Data Stream Median
DataStreamMedianNumberskeepcoming,returnthemedianofnumbersateverytimeanewnumberadded.Haveyoumetthisquestioninarealinterview?ExampleFornumberscominglist:[1,2,3,4,5],return[1,1,2,2,3].Fornumberscomingli
xudli
·
2015-06-06 15:00
LintCode
- Number of Airplanes in the Sky
Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most? Example For interval list [[1,10],[2,3],[5,8],[4,7]], return 3 Note
yuanhsh
·
2015-06-04 12:00
number
LintCode
- Number of Airplanes in the Sky
Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most? Example For interval list [[1,10],[2,3],[5,8],[4,7]], return 3 Note
yuanhsh
·
2015-06-04 12:00
number
LintCode
- Subarray Sum Zero
Given an integer array, find a subarray where the sum of numbers is zero. Your code should return the index of the first number and the index of the last number. Example Given [-3, 1, 2,
yuanhsh
·
2015-06-04 11:00
array
LintCode
- Subarray Sum Zero
Given an integer array, find a subarray where the sum of numbers is zero. Your code should return the index of the first number and the index of the last number. Example Given [-3, 1, 2,
yuanhsh
·
2015-06-04 11:00
array
LintCode
- Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead. Example Given the array [2,3,
yuanhsh
·
2015-06-04 10:00
array
LintCode
- Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead. Example Given the array [2,3,
yuanhsh
·
2015-06-04 10:00
array
LintCode
- Expression Evaluation
Given an expression string array, return the final result of this expression. Hint: Shunting-yard algorithm Example For the expression 2*6-(23+7)/(1+2), input is [ "2", &q
yuanhsh
·
2015-06-01 00:00
express
LintCode
- Expression Evaluation
Given an expression string array, return the final result of this expression. Hint: Shunting-yard algorithm Example For the expression 2*6-(23+7)/(1+2), input is [ "2", &q
yuanhsh
·
2015-06-01 00:00
express
LintCode
- Infix to Postfix / Convert Expression to Reverse Polish Notation
Given an expression string array, return the Reverse Polish notation of this expression. (remove the parentheses) Aka, convert infix notation to postfix notation. Example For the expressio
yuanhsh
·
2015-06-01 00:00
express
LintCode
- Infix to Postfix / Convert Expression to Reverse Polish Notation
Given an expression string array, return the Reverse Polish notation of this expression. (remove the parentheses) Aka, convert infix notation to postfix notation. Example For the expressio
yuanhsh
·
2015-06-01 00:00
express
LintCode
- Infix to Prefix / Convert Expression to Polish Notation
Given an expression string array, return the Polish notation of this expression. (remove the parentheses) Aka, convert infix notation to prefix notation. Example For the expression [
yuanhsh
·
2015-06-01 00:00
express
LintCode
- Infix to Prefix / Convert Expression to Polish Notation
Given an expression string array, return the Polish notation of this expression. (remove the parentheses) Aka, convert infix notation to prefix notation. Example For the expression [
yuanhsh
·
2015-06-01 00:00
express
LintCode
-打劫房屋
假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱,算一算,如果今晚去打劫,你最多可以得到多少钱 在不触动报警装置的情况下。样例给定 [3,8,4],返回 8.挑战O(n)时间复杂度且O(1)存储。分析:又是一个动态
wangyuquanliuli
·
2015-05-23 16:00
面试
lintcode
LintCode
-下一个排列
给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列。如果没有下一个排列,则输出字典序最小的序列。样例左边是原始排列,右边是对应的下一个排列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1挑战不允许使用额外的空间。分析:从后往前找,找到第一对(i,j),使得nums[i]&nums){ //writeyourcodehere intn=nums
wangyuquanliuli
·
2015-05-23 15:00
面试
lintcode
LintCode
-硬币排成线 II
有 n 个不同价值的硬币排成一条线。两个参赛者轮流从右边依次拿走1或2个硬币,直到没有硬币为止。计算两个人分别拿到的硬币总价值,价值高的人获胜。请判定 第一个玩家 是输还是赢?样例给定数组A= [1,2,2],返回 true.给定数组A= [1,2,4],返回 false.分析:肯定还是动态规划问题,而已可以知道dp[i]肯定和dp[i-1],dp[i-2]有关,注意根据样例的情况,应该是轮流从左
wangyuquanliuli
·
2015-05-23 12:00
面试
lintcode
LintCode
-硬币排成线 III
Thereare n coinsinaline.Twoplayerstaketurnstotakeacoinfromoneoftheendsofthelineuntiltherearenomorecoinsleft.Theplayerwiththelargeramountofmoneywins.Couldyoupleasedecidethefirstplayerwillwinorlose?样例Gi
wangyuquanliuli
·
2015-05-22 23:00
面试
lintcode
LintCode
-第一个错误的代码版本
代码库的版本号是从1到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。你可以通过 isBadVersion 的接口来判断版本号version是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。样例给出 n=5调用isBadVersion(3),得到false调用isBadVersion(5),得到true调用is
wangyuquanliuli
·
2015-05-21 23:00
面试
lintcode
LintCode
-最小调整代价
给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少。样例对于数组[1,4,2,3]和target=1,最小的调整方案是调整为[2,3,2,3],调整代价之和是2。返回2。注意你可以假设数组中每个整数都是正整数,且小于等于100。分析:一般这种题,每个位置上都有很多种可能,基本上就是动态规划了,又因为
wangyuquanliuli
·
2015-05-21 23:00
面试
lintcode
LintCode
-二叉树中的最大路径和
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)样例给出一棵二叉树:1 /\ 23 返回 6分析:每条最长路径都肯定会以某个顶点为跟,然后两边是以那个节点为跟到叶子节点的最长路径。代码:/** *DefinitionofTreeNode: *classTreeNode{ *public: *intval; *TreeNode
wangyuquanliuli
·
2015-05-21 21:00
面试
lintcode
LintCode
-跳跃游戏
给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。判断你是否能到达数组的最后一个位置。样例A= [2,3,1,1,4],返回true.A= [3,2,1,0,4],返回false.分析:遍历一遍,记录可走的点可以达到的最远点代码:classSolution{ public: /** *@paramA:Alistofintegers *@retu
wangyuquanliuli
·
2015-05-21 20:00
面试
lintcode
LintCode
-用递归打印数字
用递归的方法找到从1到最大的N位整数。样例给出 N=1,返回[1,2,3,4,5,6,7,8,9].给出 N=2,返回[1,2,3,4,5,6,7,8,9,10,11,...,99].注意用下面这种方式去递归其实很容易:recursion(i){ ifi>largestnumber: return results.add(i) recursion(i+1) } 但是这种方式会耗费很多的递归空间,导
wangyuquanliuli
·
2015-05-21 19:00
面试
lintcode
LintCode
-赋值运算符重载
实现赋值运算符重载函数,确保:新的数据可准确地被复制旧的数据可准确地删除/释放可进行 A=B=C 赋值样例如果进行 A=B 赋值,则A中的数据被删除,取而代之的是B中的数据。如果进行 A=B=C 赋值,则A和B都复制了C中的数据。挑战充分考虑安全问题,并注意释放旧数据。分析:说实话,题目没有描述清楚,实际上就是写一个深拷贝,注意自己给自己赋值的特殊情况。代码:classSolution{ publ
wangyuquanliuli
·
2015-05-21 18:00
面试
lintcode
LintCode
-三角形计数
给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例例如,给定数组S= {3,4,6,7},返回 3其中我们可以找到的三个三角形为:{3,4,6} {3,6,7} {4,6,7} 给定数组S= {4,4,4,4},返回 3其中我们可以找到的三个三角形为:{4(1),4(2),4(3)} {4(1),4(2),4(4)} {4(1)
wangyuquanliuli
·
2015-05-21 18:00
面试
lintcode
LintCode
-不同的子序列
给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响。(比如,“ACE”是“ABCDE”的子序列字符串,而“AEC”不是)。 样例给出S= "rabbbit",T= "rabbit"返回3分析:一般来说,如果题目里面给出两个字符串,基本是两种思路,一种就是递归判断,一种就是动态规划,这里我
wangyuquanliuli
·
2015-05-18 23:00
面试
lintcode
LintCode
-背包问题 II
给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大?样例对于物品体积[2,3,5,7]和对应的价值[1,5,2,4],假设背包大小为10的话,最大能够装入的价值为9。注意A[i],V[i],n,m均为整数。你不能将物品进行切分。你所挑选的物品总体积需要小于等于给定的m。分析:最原始的01背包问题。代码:classSolution{ public: /
wangyuquanliuli
·
2015-05-18 21:00
面试
lintcode
LintCode
-堆化
给出一个整数数组,堆化操作就是把它变成一个最小堆数组。对于堆数组A,A[0]是堆的根,并对于每个A[i],A[i*2+1]是A[i]的左儿子并且A[i*2+2]是A[i]的右儿子。样例给出 [3,2,1,4,5],返回[1,2,3,4,5] 或者任何一个合法的堆数组挑战O(n)的时间复杂度完成堆化说明什么是堆?堆是一种数据结构,它通常有三种方法:push,pop和top。其中,“push”添加新的
wangyuquanliuli
·
2015-05-18 19:00
面试
lintcode
LintCode
-最接近零的子数组和
给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最有一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置样例给出[-3,1,1,-3,5],返回[0,2],[1,3], [1,1], [2,2] 或者[0,4]挑战O(nlogn)的时间复杂度分析:首先O(n^2)的算法很好想,直接枚举起点就行,看到挑战的复杂度,想肯定要排序或者二分什么的,这里没找出能二分的性质来,所以想只能
wangyuquanliuli
·
2015-05-18 12:00
面试
lintcode
LintCode
-快速幂
计算an %b,其中a,b和n都是32位的整数。样例例如231 %3=2例如1001000 %1000=0挑战O(logn)分析:既然复杂度有要求,那么肯定是类似二分啦。代码:classSolution{ public: /* *@parama,b,n:32bitintegers *@return:Aninteger */ intfastPower(inta,intb,intn){ //write
wangyuquanliuli
·
2015-05-18 11:00
面试
lintcode
LintCode
-交错正负数
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。样例给出数组[-1,-2,-3,4,5,6],重新排序之后,变成[-1,5,-2,4,-3,6]或者其他任何满足要求的答案注意不需要保持正整数或者负整数原来的顺序。挑战原地完成,没有额外的空间分析:如果正数多那么第一个数应该是正数,反之也成立,确定每一位的符号,然后从后面选就行,复杂度为O(n^2),不清楚有没有更优的。代码:cla
wangyuquanliuli
·
2015-05-18 10:00
面试
lintcode
LintCode
-颜色分类
给定一个包含红,白,蓝且长度为n的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。我们可以使用整数0,1和2分别代表红,白,蓝。样例注意不能使用代码库中的排序函数来解决这个问题说明一个相当直接的解决方案是使用计数排序扫描2遍的算法。首先,迭代数组计算0,1,2出现的次数,然后依次用0,1,2出现的次数去覆盖数组。你否能想出一个仅使用常数级额外空间复杂度且只扫描遍历一遍
wangyuquanliuli
·
2015-05-18 10:00
面试
lintcode
LintCode
-组合
组给出两个整数n和k,返回从1......n中选出的k个数的组合。样例例如n=4且k=2返回的解为:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]分析:对每个元素,取或不取,递归回溯代码:classSolution{ public: /** *@paramn:Giventherangeofnumbers *@paramk:Giventhenumbersofcombina
wangyuquanliuli
·
2015-05-18 10:00
面试
lintcode
九章算法面试题70 排颜色II sort colors
在线测试本题http://www.
lintcode
.com/zh-cn/problem/sort-colors-ii/解答这道题有两种方法。方法一:可以借助一个
九章算法
·
2015-05-18 05:37
九章算法面试题
LintCode
-数字组合 II
给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。样例给出一个例子,候选数字集合为[10,1,6,7,2,1,5] 和目标数字8,解集为:[[1,7],[1,2,5],[2,6],[1,1,6]]注意所有的数字(包括目标数字)均为正整数。元素组合(a1, a2,…, ak)必须是非降序(ie, a1 ≤ a2 ≤…≤ ak)。解
wangyuquanliuli
·
2015-05-17 23:00
面试
lintcode
LintCode
-寻找旋转排序数组中的最小值
假设一个旋转排序的数组其起始位置是未知的(比如0124567 可能变成是4567012)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。样例给出[4,5,6,7,0,1,2] 返回0分析:二分查找,因为没有重复的,于是很好判断最小点在哪。代码:classSolution{ public: /** *@paramnum:arotatedsortedarray *@return:them
wangyuquanliuli
·
2015-05-17 22:00
面试
lintcode
LintCode
-寻找旋转排序数组中的最小值 II
假设一个旋转排序的数组其起始位置是未知的(比如0124567 可能变成是4567012)。你需要找到其中最小的元素。数组中可能存在重复的元素。样例给出[4,4,5,6,7,0,1,2] 返回0分析:还是二分查找,但是因为有重复元素的存在,所以最坏情况下复杂度是O(n),当num[mid]>num[r]的时候,可以肯定,最小值肯定在[mid,r]之间,当num[mid]&num){ returnf
wangyuquanliuli
·
2015-05-17 22:00
面试
lintcode
LintCode
-旋转图像
给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。样例给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]挑战能否在原地完成?分析:一种解法是原地模拟,一个点存到下一个点,一圈一圈的模拟,另外还有种简单的实现方法是通过两次折叠,先上下对换,再根据对角线对换,即可得到目标图像。代码:classSolution{ public: /** *@parammat
wangyuquanliuli
·
2015-05-17 21:00
面试
lintcode
LintCode
-矩阵归零
给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。需要在原地完成。样例给出一个矩阵[[1,2],[0,3]],返回[[0,2],[0,0]]挑战你是否使用了额外的空间?一个直接的解决方案是使用O(MN)的额外空间,但这并不是一个好的方案。一个简单的改进方案是使用O(M+N)的额外空间,但这仍然不是最好的解决方案。你能想出一个常数空间的解决方案吗?分析:若点(i,j)为0,则可以
wangyuquanliuli
·
2015-05-17 21:00
面试
lintcode
LintCode
-不同的二叉查找树
给出 n,问由1...n 为节点组成的不同的二叉查找树有多少种?样例给出n=3,有5种不同形态的二叉查找树:13321 \///\\ 321132 //\\ 2123 分析:只要记录下有x个不同的数的情况下有多少种解法,不适合用递归,在数据量较大的情况下,于是可以用记忆化搜索。我这里直接用一个数组保存结果了==代码:classSolution{ public: /** *@paramnn:Anin
wangyuquanliuli
·
2015-05-17 19:00
面试
lintcode
LintCode
-不同的二叉查找树 II
给出n,生成所有由1...n为节点组成的不同的二叉查找树样例给出n=3,生成所有5种不同形态的二叉查找树: 1 3 3 2 1 \ / / /\ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3分析:以每个数字为head,然后递归产生就行。代码:/*
wangyuquanliuli
·
2015-05-17 19:00
面试
lintcode
LintCode
-旋转链表
给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数样例给出链表1->2->3->4->5->null和k=2返回4->5->1->2->3->null分析:链表的基本操作代码:/** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode(intx):val(x)
wangyuquanliuli
·
2015-05-17 18:00
面试
lintcode
LintCode
-乱序字符串
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。样例对于字符串数组 ["lint","intl","inlt","code"]返回 ["lint","inlt","intl"]注意所有的字符串都只包含小写字母分析:对每次字母进行排序,然后用hash表记录个数就行代码:classSolution{
wangyuquanliuli
·
2015-05-17 18:00
面试
lintcode
LintCode
-图中两个点之间的路线
给出一张有向图,设计一个算法判断两个点 s 与 t 之间是否存在路线。样例如下图:A----->B----->C \| \| \| \v ->D----->E for s=B and t=E,return truefor s=D and t=C,return false分析:直接BFS()即可代码:/** *DefinitionforDirectedgraph. *structDirectedGr
wangyuquanliuli
·
2015-05-17 18:00
面试
lintcode
LintCode
-更新二进制位
给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串)样例给出N=(10000000000)2,M=(10101)2,i=2,j=6返回N=(10001010100)2挑战最少的操作次数是多少?分析:这道题粗粗一看蛮简单,但实际上坑很多,而且间接性的考了原码反码和补码(负数的二进制表示),我的做法是先都转换成二进制表
wangyuquanliuli
·
2015-05-17 17:00
面试
lintcode
LintCode
-木材加工
有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。样例有3根木头[232,124,456], k=7,最大长度为114.注意木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回 0 即可。挑战O(nlogLen),
wangyuquanliuli
·
2015-05-17 14:00
面试
lintcode
LintCode
-最大数
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数样例给出样例 [1,20,23,4,8],返回组合最大的整数为8423201注意最后的结果可能很大,所以我们返回一个字符串来代替这个整数分析:这个其实是一个排序问题,当然首字母越大肯定应该排在前面,注意【20,201】【20,203】两种情况,第一种201应该在20后面,第二种203应该在20前面。代码:boolcmp(strings1,
wangyuquanliuli
·
2015-05-16 20:00
面试
lintcode
上一页
79
80
81
82
83
84
85
86
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他