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-
最小调整代价
给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少。样例对于数组[1,4,2,3]和target=1,最小的调整方案是调整为[2,3,2,3],调整代价之和是2。返回2。注意你可以假设数组中每个整数都是正整数,且小于等于100。分析:一般这种题,每个位置上都有很多种可能,基本上就是动态规划了,又因为
wangyuquan
·
2020-08-16 15:22
面试
lintcode-
最小子串覆盖-32
给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。样例给出source="ADOBECODEBANC",target="ABC"满足要求的解"BANC"注意如果在source中没有这样的子串,返回"",如果有多个这样的子串,返回起始位置最小的子串。挑战要求时间复杂度为O(n)classSolution{public:boolcmp(ma
ljlstart
·
2020-08-16 13:47
Lintcode
LintCode-
交叉字符串
给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。您在真实的面试中是否遇到过这个题?Yes样例比如s1="aabcc"s2="dbbca"-当s3="aadbbcbcac",返回true.-当s3="aadbbbaccc",返回false.挑战要求时间复杂度为O(n^2)或者更好标签Expand相关题目Expand分析:两个字符串的问题,大部分都可以用dp[i][j]表示第一个字
wangyuquan
·
2020-08-14 08:01
面试
LintCode-
数组划分
给出一个整数数组nums和一个整数k。划分数组(即移动数组nums中的元素),使得:全部小于k的元素移到左边全部大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置i。满足nums[i]大于等于k。您在真实的面试中是否遇到过这个题?Yes例子给出数组nums=[3,2,2,1]和k=2。返回1注意你应该真正的划分数组nums。而不只不过计算比k小的整数数,假设数组nums中的全部元素都比
weixin_33859231
·
2020-08-13 21:21
LintCode-
第k大元素
在数组中找到第k大的元素您在真实的面试中是否遇到过这个题?Yes样例给出数组[9,3,2,4,8],第三大的元素是4给出数组[1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推注意你可以交换数组中的元素的位置挑战要求时间复杂度为O(n),空间复杂度为O(1)标签Expand相关题目Expand分析:利用快排的思想,不断partition,代码:classSolut
wangyuquan
·
2020-08-12 18:53
算法
面试
LintCode-
合并两个排序链表
题目描述:将两个排序链表合并为一个新的排序链表样例给出1->3->8->11->15->null,2->null,返回1->2->3->8->11->15->null。做题思路:用两个头结点l1和l2遍历两个链表,比较结点值的大小,小的那个进入新的链表,新链表定义一个头结点,指向的结点放入值以后,挪动到下一个结点,要额外考虑刚开始链表就为空,和遍历中有一个链表提前到达空的情况。关键代码:ListN
菲菲飞xiu
·
2020-08-12 00:36
链表
lintcode-
合并两个排序链表 -165
/***DefinitionofListNode*classListNode{*public:*intval;*ListNode*next;*ListNode(intval){*this->val=val;*this->next=NULL;*}*}*/classSolution{public:ListNode*mergeTwoLists(ListNode*l1,ListNode*l2){if(!l
ljlstart
·
2020-08-11 22:40
Lintcode
LintCode-
最大子数组 III
给定一个整数数组和一个整数k,找出k个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。您在真实的面试中是否遇到过这个题?Yes样例给出数组[-1,4,-2,3,-2,3]以及k=2,返回8注意子数组最少包含一个数挑战要求时间复杂度为O(n)标签Expand相关题目Expand分析:做不到题目要求的挑战,只能想到前i个数里面取了j段,这样dp[i][j]=ma
wangyuquan
·
2020-08-10 22:46
面试
算法
LintCode-
最大子数组 II
题目:给定一个整数数组,找出两个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。分析:1.求一个最小的分割数组,然后在左右边界两边再分别求两个最大连续子数组,但是对于左右边界达到了原数组的情况,需要从其内部找最大连续子数组,此路不通。2.直接求左右两侧的最大连续子数组,由于一侧取得最大的时候对于求另一侧子数组会有影响,导致和不一定为最大,所以局部最优没用,只
Simmons_Song
·
2020-08-10 19:09
lintcode-
区间最小数-205
classSegmentTreeNode{publicintstart,end,min;publicSegmentTreeNodeleft,right;publicSegmentTreeNode(intstart,intend){this.start=start;this.end=end;this.min=0;this.left=this.right=null;}}publicclassSolut
ljlstart
·
2020-08-10 17:52
Lintcode
lintcode-
搜索二维矩阵II-38
写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。您在真实的面试中是否遇到过这个题?样例考虑下列矩阵:[[1,3,5,7],[2,4,7,8],[3,5,9,10]]给出target=3,返回2//遵循杨氏矩阵的搜索规律,从左上角开始,target小于矩阵中该点的值,往
ljlstart
·
2020-08-10 12:23
Lintcode
LintCode-
快乐数
快乐数写一个算法来判断一个数是不是”快乐数”。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。样例19就是一个快乐数。1^2+9^2=828^2+2^2=686^2+8^2=1001^2+0^2+0^2=1publicclassSolution{/***@
Sunny_Ran
·
2020-08-09 19:36
数据结构&算法
LintCode-
寻找旋转排序数组中的最小值 II
假设一个旋转排序的数组其起始位置是未知的(比如0124567可能变成是4567012)。你需要找到其中最小的元素。数组中可能存在重复的元素。样例给出[4,4,5,6,7,0,1,2]返回0分析:还是二分查找,但是因为有重复元素的存在,所以最坏情况下复杂度是O(n),当num[mid]>num[r]的时候,可以肯定,最小值肯定在[mid,r]之间,当num[mid]&num){returnfindM
wangyuquan
·
2020-08-07 19:10
面试
lintcode-
搜索旋转排序数组-62
假设有一个排序的按未知的旋转轴旋转的数组(比如,0124567可能成为4567012)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。样例给出[4,5,1,2,3]和target=1,返回2给出[4,5,1,2,3]和target=0,返回-1解题思路:旋转数组实际上是两个递增数组的组成,且第一个数组中的任意一个值都大于第二个数
ljlstart
·
2020-08-07 15:27
Lintcode
LintCode-
求取A+B的问题
问题:给出两个整数a和b,求取它们的和。分析:1.首先我们想到的方法肯定是直接使用“+”等运算符,例如returna+b,如果直接使用算术运算符,那么这道题就没有任何意义了。2.大家都知道咋们键入的一系列指令、数据等最终都会被计算机转化为对应的二进制数据来识别,所以除了直接使用算术运算符,还有一种方法就是基于二进制数据使用位运算。通常情况下,位运算比算术运算要快。位运算有很多种比如“与”,“或”,
dyclg
·
2020-08-05 18:11
c++
LintCode-
合并排序数组
描述合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。例如inta[]={1,2,3,4},intb[]={2,4,5,6}合并后的结果为[1,2,2,3,4,4,5,6]方法一:直接比较两个vector中的所有元素vectormergeSortedArray(vector&A,vector&B){vectorresult_vec;if(A.empty()){returnB;}if
dyclg
·
2020-08-05 18:40
c++
LintCode-
最长无重复字符的子串
给定一个字符串,请找出其中无重复字符的最长子字符串。样例例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为3。对于,"bbbbb",其无重复字符的最长子字符串为"b",长度为1。挑战O(n)时间分析:遍历该字符串,每遍历一个字母时,利用map去找该字母最近一次出现是什么时候,中间这一段便是无重复字符的字符串。代码:classSolution{public:/***@p
wangyuquan
·
2020-08-04 03:41
面试
lintcode-
最长连续子序列
给定一个未排序的整数数组,找出最长连续序列的长度。样例给出数组[100,4,200,1,3,2],这个最长的连续序列是[1,2,3,4],返回所求长度4给出数组[4,4,1,3,2,2],这个最长的连续序列是[1,2,3,4],返回所求长度4说明要求你的算法复杂度为O(n)注意:set不能插入相同元素(set的底层实现是红黑树),set的插入是平均logm,遍历过程是n,所以O(nlogm),所以
ljlstart
·
2020-08-03 19:16
Lintcode
LintCode-
最长连续序列
最长连续序列描述给定一个未排序的整数数组,找出最长连续序列的长度。说明要求你的算法复杂度为O(n)样例给出数组[100,4,200,1,3,2],这个最长的连续序列是[1,2,3,4],返回所求长度4一开始用的map,改成unordered_map之后会快10%左右classSolution{public:/***@paramnums:Alistofintegers*@returnanintege
insidel
·
2020-08-03 19:08
lintcode
lintcode-
链表求和
http://www.lintcode.com/zh-cn/problem/add-two-numbers/两个链表求和,我们只需要模仿CPU里的加法器,设置一个S位,一个C位进位即可/***Definitionofsingly-linked-list:*classListNode{*public:*intval;*ListNode*next;*ListNode(intval){*this->va
yk_ee
·
2020-07-30 21:07
数据结构
lintcode-
二叉树的锯齿形层次遍历-71
给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)样例给出一棵二叉树{3,9,20,#,#,15,7},3/\920/\157返回其锯齿形的层次遍历为:[[3],[20,9],[15,7]]/***DefinitionofTreeNode:*classTreeNode{*public:*intval;*TreeNode*left,*right;*Tre
ljlstart
·
2020-07-30 08:16
Lintcode
lintcode-
带环链表II
给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。/***DefinitionofListNode*classListNode{*public:*intval;*ListNode*next;*ListNode(intval){*this->val=val;*this->next=NULL;*}*}*/classSolution{public:/***@par
鬼谷神奇
·
2020-07-14 16:15
LintCode-
图中两个点之间的路线
给出一张有向图,设计一个算法判断两个点s与t之间是否存在路线。样例如下图:A----->B----->C\|\|\|\v->D----->Efors=Bandt=E,returntruefors=Dandt=C,returnfalse分析:直接BFS()即可代码:/***DefinitionforDirectedgraph.*structDirectedGraphNode{*intlabel;*v
wangyuquan
·
2020-07-12 05:46
面试
lintcode-
通配符匹配
时间复杂度O(mn),dp[i][j]代表字符串s的前i个字符和字符串p的前j个字符是否匹配,可以匹配两个字符串均包含通配符的情况classSolution{public:/***@params:Astring*@paramp:Astringincludes"?"and"*"*@return:Aboolean*/boolisMatch(constchar*s,constchar*p){//writ
鬼谷神奇
·
2020-07-11 21:52
[每日一题]-
LintCode-
回文排列2
来源:
lintcode-
回文排列2描述给定一个字符串s,返回所有回文排列(不重复)。如果没有回文排列,则返回空列表。
呼延十
·
2020-07-11 15:22
每日一题
数据结构及算法
LintCode-
最多有k个不同字符的最长子字符串
给定一个字符串,找到最多有k个不同字符的最长子字符串。样例例如,给定s="eceba",k=3,T是"eceb",长度为4.挑战O(n),n是所给字符串的长度分析:采用双指针,用map记录双指针中间的字符串是否满足要求代码:classSolution{public:/***@params:Astring*@return:Thelengthofthelongestsubstring*thatcont
wangyuquan
·
2020-07-10 05:25
面试
lintcode-
最多有k个不同字符的最长子字符串
给定一个字符串,找到最多有k个不同字符的最长子字符串。样例例如,给定s="eceba",k=3,T是"eceb",长度为4.classSolution{public:intlengthOfLongestSubstringKDistinct(strings,intk){if(k==0)return0;intR=0,L=0,n=s.size();mapm;intmaxp=0;while(Rk){--m
ljlstart
·
2020-07-09 19:01
Lintcode
[随缘一题]-
LintCode-
合并两个排序链表
来源:lintcode-165.合并两个排序链表描述将两个排序链表合并为一个新的排序链表样例给出1->3->8->11->15->null,2->null,返回1->2->3->8->11->15->null。解题思路这道题的重点在于链表是已排序的.那么其实可以比较两个链表当前节点的值,哪个值小,就把它连接在新链表的后面,并将这个链表的当前指针后移一位.知道某一个链表为空,将另一个链表的所有值链接
呼延十
·
2020-07-07 20:42
随缘一题
LintCode
数据结构及算法
LintCode
链表
LintCode-
寻找旋转排序数组中的最小值
假设一个旋转排序的数组其起始位置是未知的(比如0124567可能变成是4567012)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。样例给出[4,5,6,7,0,1,2]返回0分析:二分查找,因为没有重复的,于是很好判断最小点在哪。代码:classSolution{public:/***@paramnum:arotatedsortedarray*@return:theminimum
wangyuquan
·
2020-07-05 19:53
面试
LintCode-
寻找缺失的数
给出一个包含0..N中N个数的序列,找出0..N中没有出现在序列中的那个数。您在真实的面试中是否遇到过这个题?Yes样例N=4且序列为[0,1,3]时,缺失的数为2。注意可以改变序列中数的位置。挑战在数组上原地完成,使用O(1)的额外空间和O(N)的时间。分析:感觉题目描述的不清晰,看起来是说0-N序列中只少了一个数,从样例猜测。。。于是就靠这种序列的和瞎做了一番。。。代码:classSoluti
wangyuquan
·
2020-07-05 19:53
面试
LintCode-
二叉树中的最大路径和
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)样例给出一棵二叉树:1/\23返回6分析:每条最长路径都肯定会以某个顶点为跟,然后两边是以那个节点为跟到叶子节点的最长路径。代码:/***DefinitionofTreeNode:*classTreeNode{*public:*intval;*TreeNode*left,*ri
wangyuquan
·
2020-07-05 19:53
面试
lintcode-
分糖果
空间复杂度O(n)classSolution{public:/***@paramratingsChildren'sratings*@returntheminimumcandiesyoumustgive*/intcandy(vector&ratings){//Writeyourcodeherevectordp(ratings.size(),1);for(inti=1;iratings[i-1]){d
鬼谷神奇
·
2020-07-02 15:49
LintCode-
和大于S的最小子数组
给定一个由n个整数组成的数组和一个正整数s,请找出该数组中满足其和≥s的最小长度子数组。如果无解,则返回-1。您在真实的面试中是否遇到过这个题?Yes样例给定数组[2,3,1,2,4,3]和s=7,子数组[4,3]是该条件下的最小长度子数组。挑战如果你已经完成了O(n)时间复杂度的编程,请再试试O(nlogn)时间复杂度。标签Expand相关题目Expand分析:数组的题目一般都是前缀和阿(对应O
wangyuquan
·
2020-07-01 05:54
算法
面试
LintCode-
搜索旋转排序数组
假设有一个排序的按未知的旋转轴旋转的数组(比如,0124567可能成为4567012)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。您在真实的面试中是否遇到过这个题?Yes样例给出[4,5,1,2,3]和target=1,返回2给出[4,5,1,2,3]和target=0,返回-1标签Expand相关题目Expand分析:二分
wangyuquan
·
2020-06-27 13:33
面试
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),next
wangyuquan
·
2020-06-27 13:33
面试
LintCode-
剑指Offer-(50)数组剔除元素后的乘积
classSolution{public:/***@paramA:GivenanintegersarrayA*@return:AlonglongarrayBandB[i]=A[0]*...*A[i-1]*A[i+1]*...*A[n-1]*/vectorproductExcludeItself(vector&nums){//writeyourcodeherevectortmpv;for(inti=
风顺水流
·
2020-06-27 01:44
LintCode
lintcode-
旋转链表-170
给定一个链表,旋转链表,使得每个节点向右移动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),next(NULL){}*};*/
ljlstart
·
2020-06-24 07:00
Lintcode
lintcode-
数组剔除元素后的乘积-50
给定一个整数数组A。定义B[i]=A[0]*...*A[i-1]*A[i+1]*...*A[n-1],计算B的时候请不要使用除法。样例给出A=[1,2,3],返回B为[6,3,2]typedeflonglongLong;classSolution{public:vectorproductExcludeItself(vector&nums){vectorret;intn;if((n=nums.siz
ljlstart
·
2020-06-24 07:00
Lintcode
lintcode-
分割回文串
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回s所有可能的回文串分割方案。classSolution{public:/***@params:Astring*@return:Alistoflistsofstring*/voidhelper(vector>&ret,strings,vectortmp){if(s.size()==0){ret.push_back(tmp);return
鬼谷神奇
·
2020-06-22 06:23
lintcode-
删除排序数组中的重复数字
删除排序数组中的重复数字利用库函数,偷懒法classSolution{public:/***@paramA:alistofintegers*@return:returnaninteger*/intremoveDuplicates(vector&nums){//writeyourcodeherenums.erase(unique(nums.begin(),nums.end()),nums.end()
鬼谷神奇
·
2020-04-11 01:18
Lintcode-
二进制表示
问题描述:给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在32个字符之内来精确地表示,则返回"ERROR"。难点:1、如何将小数部分转化为二进制;这就涉及到将string类型转化为float类型。刚开始我是用了#includestringstreamss;floatx;stringstr="0.1";ss>x;用这种方式有时候会出错,这种方式有时候得不到正确的float值。
爱秋刀鱼的猫
·
2020-04-06 21:32
lintcode-
单词接龙I
给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列比如:每次只能改变一个字母。变换过程中的中间单词必须在字典中出现。注意事项如果没有转换序列则返回0。所有单词具有相同的长度。所有单词都只包含小写字母。您在真实的面试中是否遇到过这个题?Yes样例给出数据如下:start="hit"end="cog"dict=["hot","dot","dog","lot","log
鬼谷神奇
·
2020-03-31 06:47
lintcode-
二叉树中的最大路径和
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)最大路径一定是以某节点为根,加上左右子树中的最大路径和/***DefinitionofTreeNode:*classTreeNode{*public:*intval;*TreeNode*left,*right;*TreeNode(intval){*this->val=val;*
鬼谷神奇
·
2020-03-21 09:14
lintcode-
单词切分
C++版给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。动态规划的本质:根据已知结论推理未知结论classSolution{public:/***@params:Astrings*@paramdict:Adictionaryofwordsdict*/boolwordBreak(strings,unordered_set&dict){if(s.size()=
鬼谷神奇
·
2020-03-18 11:44
LintCode-
最大子数组I、II、III
思路概述I、非常常规的动态规划问题,递推公式就是dp[i]=max(nums[i],nums[i]+dp[i-1]),在当前i位置判断是否舍弃i及i前面的加和结果,比当前数字优就不舍弃,即dp[i-1]得大于零,也就是历史结果得大于零才有延续下去的价值。II、两个数组相互无法重叠,必定是一个在左,一个在右,那么从正反两个方向求出I中的dp_lift[i][0]、dp_right[i][0]记录从左
想当厨子的程序员
·
2020-03-14 08:24
lintcode-
统计前面比自己小的数的个数
给定一个整数数组(下标由0到n-1,n表示数组的规模,取值范围由0到10000)。对于数组中的每个ai元素,请计算ai前的数中比它小的元素的数量。分析:求ai前的数中比他小的元素数量,即,在ai之前的元素中区间[0,ai-1]的元素数量构建线段树,节点中包含元素出现的次数,所有count>0的叶子结点表示元素存在;依次更新结点计数,所以后面的元素不影响前面的元素计数。classNode{publi
鬼谷神奇
·
2020-03-14 07:37
lintcode-
线段树查询I
/***DefinitionofSegmentTreeNode:*classSegmentTreeNode{*public:*intstart,end,max;*SegmentTreeNode*left,*right;*SegmentTreeNode(intstart,intend,intmax){*this->start=start;*this->end=end;*this->max=max;*
鬼谷神奇
·
2020-03-04 17:06
lintcode-
排序矩阵中的从小到大第k个数
在一个排序矩阵中找从小到大的第k个整数。排序矩阵的定义为:每一行递增,每一列也递增。样例给出k=4和一个排序矩阵:[[1,5,7],[3,7,8],[4,8,9],]返回5。挑战:使用O(klogn)的方法,n为矩阵的宽度和高度中的最大值。注意make_pair()使用括号classSolution{public:/***@parammatrix:amatrixofintegers*@paramk
鬼谷神奇
·
2020-02-26 10:04
LintCode-
二叉树的前、中、后序遍历-递归
描述给出一棵二叉树,返回其节点值的前、中、后序遍历。样例给出一棵二叉树{1,#,2,3},12/3返回[3,2,1]挑战你能使用非递归实现么?代码(递归)前序遍历"""DefinitionofTreeNode:classTreeNode:def__init__(self,val):self.val=valself.left,self.right=None,None"""classSolution:
想当厨子的程序员
·
2020-02-17 06:33
LintCode-
编辑距离
给出两个单词word1和word2,计算出将word1转换为word2的最少操作次数。你总共三种操作方法:插入一个字符删除一个字符替换一个字符样例给出work1="mart"和work2="karma"返回3分析:minSteps[i][j]表示word1的前i个字符改为word2的前j个字符的最少操作数,因此有转移方程minSteps[i][j]={minSteps[i-1][j-1];(wor
Arnold134777
·
2020-02-16 02:43
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
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
其他