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
每日算法
【
每日算法
】快速幂
数值的整数次方实现函数doublePower(doublebase,intn) 求base的n次方,不得使用库函数,同时不需要考虑大数问题。Tips问题本身很直观,但是越简单的题越需要细心思考,包括边界问题和效率问题,如果不能考虑到以下3点,就无法给出令人满意的答案:考虑n为负数的情况;考虑base为0的情况;当n较大时,如何保证效率?分析针对上面3个问题,我们逐一解答:1.在计算的时候,我们统一
jiange_zh
·
2016-02-18 11:00
异常处理
算法
power
快速幂
整数次方
【
每日算法
】洗牌算法
洗牌算法给定一个n个数的序列,设计一个算法将其随机打乱,保证每个数出现在任意一个位置的概率相同(也就是说在n!个的排列中,每一个排列出现的概率相同)。朴素的做法:假设输入为数组num[length]。随机选一个数,放到num[0]中,再随机选数,如果该数已经选过,重新选,直到该数未选过时放入num[1]中,以此类推,直到所有的数都选出来,很明显,这种选法一共有n!中可能,每种可能出现的概率都相同。
jiange_zh
·
2016-02-18 10:19
算法与数据结构
每日算法
【
每日算法
】洗牌算法
洗牌算法给定一个n个数的序列,设计一个算法将其随机打乱,保证每个数出现在任意一个位置的概率相同(也就是说在n!个的排列中,每一个排列出现的概率相同)。朴素的做法:假设输入为数组num[length]。随机选一个数,放到num[0]中,再随机选数,如果该数已经选过,重新选,直到该数未选过时放入num[1]中,以此类推,直到所有的数都选出来,很明显,这种选法一共有n!中可能,每种可能出现的概率都相同。
jiange_zh
·
2016-02-18 10:00
算法
洗牌算法
完美洗牌
经典洗牌
【
每日算法
】开篇&二分查找
开篇算法是神奇的。IT技术日新月异,各种语言、工具、平台快速更迭着。而算法、数据结构,几乎是不会过时的。之前学习了算法与数据结构,但是总感觉没有用武之地,对算法的认识大多仅限于”程序设计大赛”。因为不常用,所以渐渐生疏。前阵子在学习lighttpd的源码,发现里面的算法、数据结构几乎贯穿了整个项目,数组、字符串、链表、树等数据结构以及二分查找等算法的灵活应用,使得整个项目的逻辑更加清晰,而效率也提
jiange_zh
·
2016-02-18 10:36
算法与数据结构
每日算法
二分查找
算法
旋转有序数组
循环有序数组
【
每日算法
】开篇&二分查找
开篇算法是神奇的。IT技术日新月异,各种语言、工具、平台快速更迭着。而算法、数据结构,几乎是不会过时的。之前学习了算法与数据结构,但是总感觉没有用武之地,对算法的认识大多仅限于”程序设计大赛”。因为不常用,所以渐渐生疏。前阵子在学习lighttpd的源码,发现里面的算法、数据结构几乎贯穿了整个项目,数组、字符串、链表、树等数据结构以及二分查找等算法的灵活应用,使得整个项目的逻辑更加清晰,而效率也提
jiange_zh
·
2016-02-18 10:00
二分查找
算法
旋转有序数组
循环有序数组
Count and Say
每日算法
——leetcode系列问题CountandSayDifficulty:EasyThecount-and-saysequenceisthesequenceofintegersbeginningasfollows
carlblack
·
2016-01-18 00:00
递归
leetcode
算法
c++
Search Insert Position
每日算法
——leetcode系列问题SeSearchInsertPositionDifficulty:MediumGivenasortedarrayandatargetvalue,returntheindexifthetargetisfound.Ifnot
carlblack
·
2016-01-12 00:00
数组
二分查找
leetcode
算法
c++
Search for a Range
每日算法
——leetcode系列问题SearchforaRangeDifficulty:MediumGivenasortedarrayofintegers,findthestartingandendingpositionofagiventargetvalue.Youralgorithm'sruntimecomplexitymustbeintheorderofO
carlblack
·
2016-01-11 00:00
数组
二分查找
leetcode
算法
c++
# Search in Rotated Sorted Array
每日算法
——leetcode系列问题SearchinRotatedSortedArrayDifficulty:HardSupposeasortedarrayisrotatedatsomepivotunknowntoyoubeforehand
carlblack
·
2016-01-11 00:00
二分查找
数组
leetcode
算法
c++
Substring with Concatenation of All Words
标签:C++算法LeetCode字符串
每日算法
——leetcode系列问题SubstringwithConcatenationofAllWordsDifficulty:HardYouaregivenastring
CarlBlack
·
2016-01-07 22:48
Merge k Sorted Lists
标签:C++算法LeetCode链表
每日算法
——leetcode系列问题MergeTwoSortedListsDifficulty:EasyMergetwosortedlinkedlistsandreturnitasanewlist.Thenewlistshouldbemadebysplicingtogetherthenodesofthefirsttwolists
CarlBlack
·
2015-12-31 08:31
Reverse Nodes in k-Group
每日算法
——leetcode系列问题ReverseNodesink-GroupDifficulty:HardGivenalinkedlist,reversethenodesofalinkedlistkatatimeandreturnitsmodifiedlist.Ifthenumberofnodesisnotamultipleofkthenleft-outnodesintheendshouldre
carlblack
·
2015-12-31 00:00
链表
leetcode
算法
c++
Swap Nodes in Pairs
标签(空格分隔):C++算法LeetCode链表
每日算法
——leetcode系列问题SwapNodesinPairsDifficulty:MediumGivenalinkedlist,swapeverytwoadjacentnodesandreturnitshead.Forexample
carlblack
·
2015-12-30 00:00
链表
leetcode
算法
c++
Generate Parentheses
每日算法
——leetcode系列问题GenerateParenthesesDifficulty:MediumGivennpairsofparentheses,writeafunctiontogenerateallcombinationsofwell-formedparentheses.Forexample
carlblack
·
2015-12-28 00:00
递归
字符串
leetcode
算法
c++
【
每日算法
】C语言8大经典排序算法(2)
接上文--->【
每日算法
】C语言8大经典排序算法(1) 二、插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置
·
2015-11-12 23:29
排序算法
【
每日算法
】C语言8大经典排序算法(1)
算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容。所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列。排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可以采用不同的排序方法。那么就整理下网上搜索的资料,按自己的理解,把C语言的8大排序算法列出来。 普通意义上,排序算法可以分为三大类: 1 交换类排序法2 插入类排序法3 选择类排序法
·
2015-11-12 23:29
排序算法
(
每日算法
)LeetCode --- Reverse Linked List II(旋转链表的指定部分)
ReverseLinkedListII(旋转链表的指定部分)Leetcode Reversealinkedlistfrompositionmton.Doitin-placeandinone-pass. Forexample: Given1->2->3->4->5->NULL,m=2andn=4, return1->4->3->2->5->NULL. No
yapian8
·
2015-01-16 09:00
(
每日算法
)LeetCode --- Decode Ways
Amessagecontaininglettersfrom A-Z isbeingencodedtonumbersusingthefollowingmapping:'A'->1 'B'->2 ... 'Z'->26 Givenanencodedmessagecontainingdigits,determinethetotalnumberofwaystodecodeit.Forexample,Giv
yapian8
·
2015-01-13 21:00
(
每日算法
)LeetCode -- Merge Sorted Array (合并有序数组)
GiventwosortedintegerarraysAandB,mergeBintoAasonesortedarray.Note:YoumayassumethatAhasenoughspace(sizethatisgreaterorequalto m + n)toholdadditionalelementsfromB.ThenumberofelementsinitializedinAandBar
yapian8
·
2015-01-12 20:00
(
每日算法
)Leetcode --- Maximal Rectangle(最大子矩阵)
求在0-1矩阵中找出面积最大的全1矩阵Givena2Dbinarymatrixfilledwith0'sand1's,findthelargestrectanglecontainingallonesandreturnitsarea. 首先,想使用遍历两次的暴力方法解决是不靠谱的,先打消这个念头。这道题的解法灵感来自于 LargestRectangleinHistogram 这道题,假设我们把矩阵沿
yapian8
·
2014-12-25 21:00
(
每日算法
)Leetcode -- Largest Rectangle in Histogram(最大实心矩形)
思路:如果时间复杂度要求是O(n 2 )的话,解法比较多也比较好理解。比如可以遍历,对于当前i位置上的立柱,计算出以这个i立柱结尾的最大矩形,然后求出总的最大矩形。Given n non-negativeintegersrepresentingthehistogram'sbarheightwherethewidthofeachbaris1,findtheareaoflargestrectang
yapian8
·
2014-12-18 21:00
(
每日算法
)LeetCode --- Search in Rotated Sorted Array(旋转数组的二分检索)
SearchinRotatedSortedArrayI&&IILeetcode对有序数组进行二分查找(下面仅以非递减数组为例): intbinarySort(intA[],intlo,inthi,inttarget) { while(lo=A[l],那么[l,m]为递增序列的假设就不能成立了,比如[1,3,1,1,1]。如果A[m]>=A[l]不能确定递增,那就把它拆分成两个条件
yapian8
·
2014-12-10 21:00
(
每日算法
)LeetCode --- Remove Duplicates from Sorted Array II (删除重复元素II)
RemoveDuplicatesfromSortedArrayIILeetcode题目:Followupfor"RemoveDuplicates":Whatifduplicatesareallowedatmosttwice?Forexample,GivensortedarrayA=[1,1,1,2,2,3],Yourfunctionshouldreturnlength=5,andAisnow[1,
yapian8
·
2014-12-10 20:00
(
每日算法
)LeetCode --- Word Search(矩阵中查找单词)
在矩阵中查找给定的单词是否出现,可以向上、向下、向左和向右查找。不能在一个字母上重复查找。Givena2Dboardandaword,findifthewordexistsinthegrid.Thewordcanbeconstructedfromlettersofsequentiallyadjacentcell,where"adjacent"cellsarethosehorizontallyorv
yapian8
·
2014-12-08 21:00
(
每日算法
)LeetCode --- Subsets(子集合)
Givenasetofdistinctintegers, S,returnallpossiblesubsets.Note:Elementsinasubsetmustbeinnon-descendingorder.Thesolutionsetmustnotcontainduplicatesubsets.Forexample,If S = [1,2,3],asolutionis:[ [3], [1],
yapian8
·
2014-12-08 19:00
(
每日算法
)LeetCode --- Combinations (组合数)
Giventwointegers n and k,returnallpossiblecombinationsof k numbersoutof1... n.Forexample,If n =4and k =2,asolutionis:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]//这是一个数学组合问题,即从n个数中随机选出k个数。可以用递归回溯来实现
yapian8
·
2014-12-01 19:00
(
每日算法
)LeetCode---Minimum Window Substring (最小子串窗口)
GivenastringSandastringT,findtheminimumwindowinSwhichwillcontainallthecharactersinTincomplexityO(n).Forexample,S = "ADOBECODEBANC"T = "ABC"Minimumwindowis "BANC".Note:IfthereisnosuchwindowinSthatcover
yapian8
·
2014-11-30 09:00
(
每日算法
)LeetCode---Search a 2D Matrix(查找元素是否存在)
通过二分查找查找元素是否存在矩阵中。这也是二分查找的具体应用,思想不变,但是细节上需要变化。Writeanefficientalgorithmthatsearchesforavalueinan m x n matrix.Thismatrixhasthefollowingproperties:Integersineachrowaresortedfromlefttoright.Thefirstinte
yapian8
·
2014-11-24 22:00
(
每日算法
)LeetCode--Set Matrix Zeroes (矩阵置零)
给定一个矩阵,如果有零元素那么就将零元素所在的行和列都置为零。Givena m x n matrix,ifanelementis0,setitsentirerowandcolumnto0.Doitinplace.最直观的解法就是开辟一个新的矩阵,当原矩阵存在零元素的时候,就将新矩阵的对应行和列置为零。这样空间复杂度较高,也是题目不允许的。题目的难点就在于,如果遇到零元素之后马上在矩阵上操作,将所在
yapian8
·
2014-11-24 20:00
(
每日算法
)Leetcode--Edit Distance(编辑距离)
简单地说,就是仅通过插入(insert)、删除(delete)和替换(substitute)个操作将一个字符串s1变换到另一个字符串s2的最少步骤数。熟悉算法的同学很容易知道这是个动态规划问题。 其实一个替换操作可以相当于一个delete+一个insert,所以我们将权值定义如下:I (insert):1D(delete):1S(substitute):1示例:intention->executi
yapian8
·
2014-11-13 20:00
动态规划
编辑距离
(
每日算法
)Leetcode--Simplify Path (简单路径)
给定一个Unix风格的路径,简化之。使其不改变路径的结果,但是去掉中间无用的字符。因为系统执行的时候也是逐段查看的,因此最直观的做法就是使用栈来简化,当是/..时,出栈;当是/.时,忽视;当时其他时才进栈。Givenanabsolutepathforafile(Unix-style),simplifyit.Forexample,path = "/home/",=> "/home"path = "/
yapian8
·
2014-11-12 21:00
(
每日算法
)leetcode--Text Justification(格式化字符串)
要求:给定一组字符串,按照给定长度(eg.16)格式化显示,使每一行尽可能多的单词,单词之间的空格均衡-最左侧可以稍多,左右对齐。最后一行靠左对齐,即最右侧可以没有间隙。如下面的例子描述:1)每一行16个字符2)左右对齐,空格数均衡,最左侧的间隙可以多一个空格3)单词不可以拆开,最后一行左对齐。原题描述:Givenanarrayofwordsandalength L,formatthetextsu
yapian8
·
2014-11-11 21:00
每日算法
(链表)
1、一个有环链表,找出环路的开头结点。LinkedListNodeFindBeginning(LinkedListNodehead){LinkedListNodeslow=head;LinkedListNodefast=head;while(fast!=null&&fast.next!=null){slow=slow.next;fast=fast.next.next;if(slow==fast){
LXYTSOS
·
2014-11-06 11:12
笔记
算法
每日算法
(链表)
1、一个有环链表,找出环路的开头结点。LinkedListNodeFindBeginning(LinkedListNodehead){ LinkedListNodeslow=head; LinkedListNodefast=head; while(fast!=null&&fast.next!=null){ slow=slow.next; fast=fast.next.next; if(slow=
LXYTSOS
·
2014-11-06 11:00
算法
每日算法
(数组与字符串二)
1、利用字符连续出现的次数,编写一个方法,实现字符串压缩功能,如果压缩后的字符串没有变短则返回原来的字符串。Stringcompress(Stringstr){//检查压缩后字符串是否变长intsize=countCompression(str);if(size>=str.length()){returnstr;}StringBuffermystr=newStringBuffer();charla
LXYTSOS
·
2014-11-03 11:20
笔记
算法
每日算法
(数组与字符串二)
1、利用字符连续出现的次数,编写一个方法,实现字符串压缩功能,如果压缩后的字符串没有变短则返回原来的字符串。 Stringcompress(Stringstr){ //检查压缩后字符串是否变长 intsize=countCompression(str); if(size>=str.length()){ returnstr; } StringBuffermystr=newStringBuffer(
LXYTSOS
·
2014-11-03 11:00
算法
每日算法
(数组与字符串)
1、确定一个字符串的所有字符是否全都不同,假定字符集为ASCII。思考:首先确定字符串长度是否大于256,再创建一个大小为256的布尔型数组用来记录字符是否出现。publicbooleanisUniqueChars(Stringstr){if(str.length()>256)returnfalse;boolean[]char=newboolean[256];for(inti=0;i
LXYTSOS
·
2014-11-02 16:50
笔记
算法
每日算法
(数组与字符串)
1、确定一个字符串的所有字符是否全都不同,假定字符集为ASCII。 思考:首先确定字符串长度是否大于256,再创建一个大小为256的布尔型数组用来记录字符是否出现。publicbooleanisUniqueChars(Stringstr){ if(str.length()>256)returnfalse; boolean[]char=newboolean[256]; for(inti=0;
LXYTSOS
·
2014-11-02 16:00
算法
每日算法
之四十八:Plus One (数组表示的十进制加一进位)以及求Sqrt(x)
给定数组表示的十进制数,加一操作。结果依然用十进制的数组表示。这里主要注意最高位(digit[0])依然有进位,即溢出的情况。Givenanon-negativenumberrepresentedasanarrayofdigits,plusonetothenumber.Thedigitsarestoredsuchthatthemostsignificantdigitisattheheadofthe
yapian8
·
2014-09-15 19:00
算法
每日算法
之四十七:Valid Number (验证是否为数字)
要想正确的写出这个函数不是件容易的事情,因为要考虑的事情很多:1)字符串的前后都可能会有空格,但是中间不允许有空格。2)可能有小数,1.235,或者.3522这种形式3)可能有指数形式,2e10 2e-1等形式Validateifagivenstringisnumeric.Someexamples:"0" => true"0.1" => true"abc" => false"1a" => fals
yapian8
·
2014-09-14 15:00
验证
每日算法
之四十六:Add Binary(二进制字符创相加)
二进制字符创相加,通过进位的方式逐位考虑。也可以把相加的过程抽象成一个函数。Giventwobinarystrings,returntheirsum(alsoabinarystring).Forexample,a= "11"b= "1"Return "100".方法一:classSolution{ public: stringaddBinary(stringa,stringb){ inta_len
yapian8
·
2014-09-14 14:00
二进制
每日算法
之四十五:Merge Two Sorted Lists(合并有序链表)
/** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode(intx):val(x),next(NULL){} *}; */ classSolution{ public: ListNode*mergeTwoLists(ListNode*l1,ListNode*l2){ if(l1=
yapian8
·
2014-09-11 19:00
链表
每日算法
之四十四:Unique Path(矩阵中不重复路径的数目)
UniquePaths:Arobotislocatedatthetop-leftcornerofa m x n grid(marked'Start'inthediagrambelow).Therobotcanonlymoveeitherdownorrightatanypointintime.Therobotistryingtoreachthebottom-rightcornerofthegrid(
yapian8
·
2014-09-06 21:00
unique
unique
II
Paths
Paths
每日算法
之四十三:Rotate List (列表旋转k个元素)
Givenalist,rotatethelisttotherightby k places,where k isnon-negative.Forexample:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.这里的k可能是比链表长度要大的数字,因此实际旋转的位置就是k%len(list)。如果这个计算结果等于零或者等于l
yapian8
·
2014-08-20 21:00
链表旋转
每日算法
之四十二:Permutation Sequence (顺序排列第k个序列)
Theset [1,2,3,…,n] containsatotalof n!uniquepermutations.Bylistingandlabelingallofthepermutationsinorder,Wegetthefollowingsequence(ie,for n =3):"123""132""213""231""312""321"Given n and k,returnthe kt
yapian8
·
2014-08-19 20:00
字典序
每日算法
之四十一:Spiral Matrix II (螺旋矩阵)
Givenaninteger n,generateasquarematrixfilledwithelementsfrom1to n2 inspiralorder.Forexample,Given n = 3,Youshouldreturnthefollowingmatrix:[ [1,2,3], [8,9,4], [7,6,5] ] 针对这个问题采用最直观的方式即可,即螺旋插入,这里有两个地方需要
yapian8
·
2014-08-15 21:00
螺旋矩阵
每日算法
之四十:Insert Interval
Givenasetof non-overlapping intervals,insertanewintervalintotheintervals(mergeifnecessary).Youmayassumethattheintervalswereinitiallysortedaccordingtotheirstarttimes.Example1:Givenintervals [1,3],[6,9]
yapian8
·
2014-08-11 18:00
每日算法
之三十九:Pow(x, n)
实现浮点类型的幂运算,函数原型为:doublepow(doublex,intn)在求解这个问题的时候是一个很挣扎的过程,因为它不是报错而是一直提示你超出时间,那么必须一次次的考虑怎样降低时间复杂度。首先最直接的思路是下面这样的,就跟直观的数学求解一样。doublepow(doublex,intn) { if(n==0) return1.0; if(n>1); if(n%2==0) returnha
yapian8
·
2014-07-01 21:00
每日算法
之三十八:Anagrams
Givenanarrayofstrings,returnallgroupsofstringsthatareanagrams.Note:Allinputswillbeinlower-case.回文字符串是指: 两个字符串的字符个数完全相同,这两个字符串是Anagrams。因此Anagrams至少指俩字符串。找出字符集合中的Anagrams组。 由此我们可以想到,只要将几个单词按照字母顺序进行排序,就
yapian8
·
2014-06-30 21:00
每日算法
之三十七:Rotate Image (图像旋转)
Youaregivenan n x n 2Dmatrixrepresentinganimage.Rotatetheimageby90degrees(clockwise).Followup:Couldyoudothisin-place?原地图像顺时针旋转90度。因为要求空间复杂度是常数,因此应该迭代旋转操作。classSolution{ public: voidrotate(vector>&matr
yapian8
·
2014-06-29 22:00
矩阵旋转
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
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
其他