
算法
文章平均质量分 71
ShelbyLee
这个作者很懒,什么都没留下…
展开
-
查找算法之二分查找法
查找算法之二分查找法思想二分查找法的思想非常简单,对于一个有序数列,找它中间的元素,看是否是查找目标,如果不是,就看这个查找目标是小于还是大于中间元素,然后在对应的区间内重复上述过程。算法需要注意几个问题:while 循环:while 循环的条件应该是 left < right 还是 left <= right 呢? 这可以从我们设置的左右边界判断出来,我...原创 2018-05-16 11:08:52 · 182 阅读 · 0 评论 -
翻转字符串的相关题目
翻转字符串的相关题目一、LeetCode: 557. Reverse Words in a String III 二、LeetCode: 541. Reverse String II 三、LeetCode: 344. Reverse String 四、LeetCode: 345. Reverse Vowels of a String 五、LeetCode: 11. Container ...原创 2018-05-20 20:04:15 · 250 阅读 · 2 评论 -
算法复杂度分析
设计一个算法,一定要考虑到它的复杂度(空间、时间),那么,接下来,我们一步步来学习怎样分析一个算法的复杂度。一、数据规模首先,我们要清楚设计这个算法是要处理什么规模的数据的,根据处理的数据的规模,从而设计出适合的算法。通常,如果要想在 1s 之内解决问题:O(n^2) 的算法可处理约 10^4 级别的数据O(n) 的算法可处理约 10^8 级别的数据O(nlogn) 的算...原创 2018-04-27 22:41:44 · 1057 阅读 · 0 评论 -
一个时间复杂度问题
问题:有一个字符串数组,将数组中的每一个字符串按照字母序排序;之后再将整个字符串数组按照字典序排序。整个操作的时间复杂度是多少?分析:假设最长的字符串长度为 s (为什么要假设最长字符串呢?因为通常求的时间复杂度是上界,所以我们假象这个字符串数组中所有字符串的长度都是最长的 s ,这样计算得出来的时间复杂度就是上界,包含了最坏的情况);数组中有 n 个字符串我们将计算分为两部分...原创 2018-04-20 22:17:49 · 556 阅读 · 0 评论 -
浅谈 KMP 算法
面试官夺命三连KMP 是啥?KMP 能干啥?手写 KMP ? 在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个词W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。 这个算法是由高德纳(Donald Ervin Knuth)和...原创 2018-04-17 09:02:40 · 488 阅读 · 0 评论 -
BFS & DFS(Java实现)
BFS 广度优先搜索 (Broadth First Search)类似于树按层次遍历的过程要求顺次访问为了顺次访问路径长度为2、3、…的顶点,需要使用队列记录已访问的顶点时间复杂度:O(n + e) e为无向图中边的数或有向图中弧的数 /** * Broadth First Search * @param graph 用于存放图中每个结点的邻接表原创 2018-02-05 17:57:43 · 5987 阅读 · 0 评论 -
排序算法总结
内部排序基于比较的排序。1. 插入排序直接插入排序基本思想:将元素插入到已经排好序的序列中。第一个元素已经是有序序列,然后比较外围的元素和序列的最后一个元素,判断是否需要插入,如果小,则插入。时间复杂度:最优 O(n) 最差 O(n^2) 是否稳定:是 public void insertSort(int[] arr) {...原创 2018-05-29 10:39:27 · 154 阅读 · 0 评论