![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 57
douguailove
让不可能变成可能,让可能变成超越期待
展开
-
利用栈检测括号的配对情况
在编程语言中经常使用的括号有()、[ ]、{ } 这三种,怎么用程序来判断在程序中或者其他情况下这三种括号的配对情况呢?首先来看一下,括号的匹配情况有如下四种:1、左右括号不匹配--------比如 ( ( abc ) ) 12 [ { ] }2、左括号比右括号多-------比如 { [ ((ab13) ] }3、右括号比左括号多-------比如 ([ ]){原创 2017-11-13 21:19:21 · 6046 阅读 · 0 评论 -
斐波那契数列的四种实现方式以及时间、空间复杂度
首先来介绍一下斐波那契数列: 斐波那契数列(Fibonacci sequence),又称黄金分割数列。因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 从定义可以看出斐波那契数列就是第一二项都是1,从第三项开始,每一项为前两项之和。那么要...原创 2017-11-25 13:26:07 · 5191 阅读 · 0 评论 -
AVL树的旋转详解
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素也就相当于是在顺序表中搜索元素,效率低下。因此,为了解决二叉搜索树中单支树的这种情况,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了AVL(平衡树):当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差(平衡因子)的绝对值不超过1(...原创 2018-03-30 11:11:04 · 360 阅读 · 0 评论 -
vector中常见接口的介绍与使用
迭代器相关iterator begin();正向迭代器:返回一个迭代器,指向vector对象的第一个元素iterator end();正向迭代器:返回一个迭代器,指向vector对象最后一个元素的后边reverse_iterator rbegin();反向迭代器:返回一个迭代器,指向vector对象最后一个元素reverse_iterator rend();反向迭代器:返回一个迭代器,指向vect...原创 2018-07-16 12:34:16 · 6830 阅读 · 0 评论 -
STL中vector的构造函数
vector是由STL提供的一种序列式容器,它的底层其实就是一个动态数组。如要使用vector,需要#include<vector>。vector的特点: 因为支持下标访问,所以能高效的进行随机存取,时间复杂度为O(1); 由于内存空间是连续的,在进行非尾插和尾删的操作时,会进行大量的数据搬移操作,时间复杂度为O(n)。 当数组...原创 2018-07-15 15:53:01 · 32808 阅读 · 1 评论 -
动态规划---求最长公共子序列
直接看题: 对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3…Un和V1,V2,V3…Vn,其中Ui&ltUi+1,Vi&ltVi+1。且A[Ui] == B[Vi]。给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。题意就是说,给出两个字符串,...原创 2018-08-19 19:55:37 · 507 阅读 · 0 评论 -
求一个数组中和为sum的方法数
题目描述 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。这是一道简单的动态规划题目,困惑了我好久,今天终于搞明白了,分享给大家。这道题使用递归的方式做OJ是过不了的,时间复杂度太高了,我们来看看使用动态规划怎么解决。 #include <iostream>usi...原创 2018-08-19 21:25:41 · 4989 阅读 · 2 评论