随笔分类 -  数据结构和算法

摘要:概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回 阅读全文
posted @ 2017-02-02 16:40 Kobe10 阅读(2495) 评论(0) 推荐(0)
摘要:原文地址:http://blog.csdn.net/qq_32400847/article/details/51336300 这篇帖子总结归纳很到位,值得学习。 阅读全文
posted @ 2017-01-25 10:26 Kobe10 阅读(610) 评论(0) 推荐(0)
摘要:贪心算法 一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必 阅读全文
posted @ 2017-01-25 10:15 Kobe10 阅读(301) 评论(0) 推荐(0)
摘要:一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅 阅读全文
posted @ 2017-01-23 14:31 Kobe10 阅读(150) 评论(0) 推荐(0)
摘要:1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Po 阅读全文
posted @ 2017-01-22 10:53 Kobe10 阅读(254) 评论(0) 推荐(0)
摘要:题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析:这是一道很新颖的关于位运算的面试题。 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出 阅读全文
posted @ 2017-01-19 13:12 Kobe10 阅读(10121) 评论(0) 推荐(0)
摘要:动态规划 算法总体思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。 但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免 阅读全文
posted @ 2017-01-19 10:43 Kobe10 阅读(244) 评论(0) 推荐(0)
摘要:这个框架还是比较通俗的,但是由于编辑工具不是很好用(linux下面的编辑工具有点bug,老是闪退,我就么有建工程,将就看吧)。主要就是实现了一下插入,删除,包含核哈希函数的构造这几个简单的方法。下面是这几个函数的具体实现代码。 这个就是实现简单的带有链表和vector的哈希表了,这个比较常见。 阅读全文
posted @ 2016-11-15 16:50 Kobe10 阅读(752) 评论(0) 推荐(0)
摘要:1. 存储图的方式一般是有两种的:邻接表和邻接矩阵,一般存储链接矩阵的方式是比较简单的,也便于我们去实现这个临接矩阵,他也就是通俗的二维数组,我们平常用到的那种。 2. 这里我们主要记录和讲一下bfs和dfs算法之间的一些区别和用法,他们的原理一般人是都知道的,但是他们是怎么来实现的我相信一部分人并 阅读全文
posted @ 2016-11-11 16:29 Kobe10 阅读(921) 评论(0) 推荐(0)
摘要:1. 顺序查找 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 复杂度分析: 阅读全文
posted @ 2016-11-11 09:26 Kobe10 阅读(6281) 评论(0) 推荐(1)
摘要:详情查看:http://www.cnblogs.com/Kobe10/p/5573415.html 阅读全文
posted @ 2016-06-26 09:57 Kobe10 阅读(146) 评论(0) 推荐(0)
摘要:详情查看:http://www.cnblogs.com/skywang12345/p/3706821.html 阅读全文
posted @ 2016-06-26 09:52 Kobe10 阅读(98) 评论(0) 推荐(0)
摘要:详情查看:http://www.cnblogs.com/skywang12345/p/3577360.html 阅读全文
posted @ 2016-06-26 09:50 Kobe10 阅读(151) 评论(0) 推荐(0)
摘要:详情查看:http://www.cnblogs.com/skywang12345/p/3576373.html 阅读全文
posted @ 2016-06-26 09:49 Kobe10 阅读(129) 评论(0) 推荐(0)
摘要:R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL 阅读全文
posted @ 2016-06-26 09:32 Kobe10 阅读(824) 评论(0) 推荐(5)
摘要:在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0 阅读全文
posted @ 2016-05-27 09:51 Kobe10 阅读(1500) 评论(0) 推荐(0)