随笔分类 -  Algorithm and something related

摘要:转载:https://www.cnblogs.com/javawebsoa/p/3194015.html 本文以快速排序为例,推导了快排的时间复杂度nlogn是如何得来的,其它算法与其类似。 对数据Data = { x1, x2... xn }: T(n)是QuickSort(n)消耗的时间; P( 阅读全文
posted @ 2019-08-20 15:39 outthinker 阅读(7037) 评论(0) 推荐(0) 编辑
摘要:题目描述: 代码如下: 阅读全文
posted @ 2018-11-14 22:12 outthinker 阅读(152) 评论(0) 推荐(0) 编辑
摘要:题目描述: 析:本题如果采用暴力遍历方法的话,最大时间复杂度为O((m + n)* (l + n)) 其实这道题可以建模成一个相遇问题,如上图所示:A和B同时出发,速度均为1,求他们的相遇点p,很明显,当行走路程达到(m + n + l)时,两者路程相同,相遇,代码如下: 阅读全文
posted @ 2018-11-14 10:29 outthinker 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tqId=11185&tPage=2&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcodin 阅读全文
posted @ 2018-11-07 18:34 outthinker 阅读(368) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&tqId=11181&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/que 阅读全文
posted @ 2018-11-05 21:23 outthinker 阅读(150) 评论(0) 推荐(0) 编辑
摘要:链接:https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&tqId=11179&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/quest 阅读全文
posted @ 2018-10-30 22:35 outthinker 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题目链接:https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interv 阅读全文
posted @ 2018-10-30 20:47 outthinker 阅读(149) 评论(0) 推荐(0) 编辑
摘要:参考链接:https://www.cnblogs.com/skywang12345/p/3576328.html 定义:二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中 阅读全文
posted @ 2018-10-30 10:45 outthinker 阅读(249) 评论(0) 推荐(0) 编辑
摘要:参考链接:https://blog.csdn.net/nepenthe_csdn/article/details/52348194 这里说一下二叉树的子树和子结构的概念: 子树的意思是包含了一个结点,就得包含这个结点下的所有节点,一棵大小为n的二叉树有n个子树,就是分别以每个结点为根的子树。子结构的 阅读全文
posted @ 2018-10-26 16:03 outthinker 阅读(2647) 评论(0) 推荐(0) 编辑
摘要:题目来自“剑指offer”中的第四题,链接:https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tqId=11157&tPage=1&rp=1&ru=/ta/coding-interviews&qru= 阅读全文
posted @ 2018-10-23 20:16 outthinker 阅读(262) 评论(0) 推荐(0) 编辑
摘要:参考博客: https://blog.csdn.net/qq_40772692/article/details/79343914 一、二叉树的常用性质 <1>.在二叉树的第i层上最多有2 i-1 个节点 。(i>=1) <2>.二叉树中如果深度为k(有k层),那么最多有2k-1个节点。(k>=1) 阅读全文
posted @ 2018-10-23 09:35 outthinker 阅读(397) 评论(0) 推荐(0) 编辑
摘要:一、舍伍德算法 作用:为了消除实例与时间复杂度之间的关系; 例如,对于一个快速排序算法,开始时所考虑的是一个有很好平均性能的选择算法,但在最坏情况下对某些实例算法效率较低,此时采用概率方法,将上述算法改造成一个舍伍德型算法,消除实例与时间复杂度之间的关系; 二、拉斯维加斯算法 它的一个显著特征:它所 阅读全文
posted @ 2018-05-31 09:38 outthinker 阅读(3206) 评论(0) 推荐(0) 编辑
摘要:首先是介绍: 代码如下: 结果如下(频率图): 阅读全文
posted @ 2018-05-20 20:25 outthinker 阅读(1553) 评论(0) 推荐(0) 编辑
摘要:一、首先说一下分支限界法的思想: (1)比较:分支限界法和回朔法有相似之处,但是回朔法是搜索问题的所有解,采用深度优先搜索;而分支限界法是搜索问题的最优解,采用的是广度优先搜索; (2)核心思想:分支限界法中,每一个活节点都只有一次机会成为扩展节点。活节点一旦成为扩展节点,就一次性产生所有的儿子节点 阅读全文
posted @ 2018-05-15 22:45 outthinker 阅读(7835) 评论(0) 推荐(0) 编辑
摘要:参考:https://blog.csdn.net/guoweimelon/article/details/50904346 一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键值 阅读全文
posted @ 2018-05-08 21:11 outthinker 阅读(21262) 评论(0) 推荐(2) 编辑
摘要:一、回朔法 首先来介绍一下回朔法: (1)基本思想:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。 (2)主要步骤:a、求解出所有解所在的解空间;b、构造相应的树等数据结构来表示解空间;c、使用深度优先搜索在树中搜索所有最优解 阅读全文
posted @ 2018-04-30 10:04 outthinker 阅读(8365) 评论(0) 推荐(0) 编辑
摘要:参考博客:https://blog.csdn.net/u010697982/article/details/45875913 关于写好递归,有几个因素要注意: (1)基准情况: (2)不断演进: (3)用人的方式思考设计: (4)不要做重复的事: (5)自己的一些理解: 一些值得参考的例子: (1) 阅读全文
posted @ 2018-04-13 14:27 outthinker 阅读(204) 评论(0) 推荐(0) 编辑
摘要:动态规划算法思想简介: 将一个问题分解为多个子问题,这点和分治法类似,但是每个子问题不是独立的而是相互联系的,所以我们在求解每个子问题的时候可能需要重复计算到其他的子问题,所以我们将计算过的子问题的解放进一个表中,这样就能避免了重复计算带来的耗费,这就是动态规划的基本思想; 一般地,动态规划思想一般 阅读全文
posted @ 2018-04-09 21:26 outthinker 阅读(1893) 评论(0) 推荐(0) 编辑
摘要:注意:这是背包问题,而不是0-1背包问题,背包问题可以用贪心算法进行求解,但0-1无法用贪心算法求解,需要用动态规划算法求解; 首先对贪心算法做一下总结,以及它与动态规划算法的区别: 贪心算法两个最重要的性质: (1)贪心选择性质; (2)最优子结构性质; 其中,贪心选择性质:自顶向下进行决策,每次 阅读全文
posted @ 2018-03-30 10:47 outthinker 阅读(30806) 评论(2) 推荐(0) 编辑
摘要:问题描述及代码参考:http://blog.csdn.net/wly_2014/article/details/51388263 代码部分: 结果如下: 阅读全文
posted @ 2018-02-25 20:29 outthinker 阅读(1777) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示