
数据结构与算法
士416
爱学习,爱分享
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
生成所有的出栈序列 (回溯法)------python
1. 题目描述根据入栈的顺序,输出所有的出栈顺序。例如:入栈顺序为123,出栈的顺序为:123,132,213,231,3212. 题目解析参考:生成所有的出栈序列 (回溯法)----c++采用回溯法和递归统计所有可能的出栈序列。(1)当所有的入栈序列已经全部入栈后,则只能出栈。(2)当栈为空时,只能进栈。(3)当仍有入栈元素且栈不为空时,可以入栈,也可以出栈。入栈 -> 递归处理下一个入栈元素 -> 恢复未入栈状态出栈 -> 将出栈元素添加到出栈序列 -&原创 2020-05-30 11:32:09 · 2693 阅读 · 0 评论 -
二叉树序列化
1. 题目描述(题目链接)2. 思路(1)根据层次遍历建立二叉树;(2)先序遍历二叉树3.代码import sysimport mathn = int(sys.stdin.readline().strip())inputList = [sys.stdin.readline().strip() for i in range(n)]m = len(inputList)nodes = pow(2,int(math.log2(m))-1)-1num = len([each原创 2020-05-29 09:36:31 · 1001 阅读 · 0 评论 -
斐波那契数列、青蛙跳、变态青蛙跳
斐波那契数列大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。(斐波那契数列:0,1,1,2,3,....,即后一项为前两项之和的数列)demo:class Solution: def Fibonacci(self, n): # write code here if n<=1: ...原创 2019-03-10 14:52:57 · 1005 阅读 · 0 评论 -
KMP算法(字符串匹配)
仅为记录对KMP算法介绍较为详细的博客链接:很详尽KMP算法(厉害)从很详尽KMP算法(厉害)处迁移到本博客:作者:July 时间:2014年7月21日晚10点1. 引言 下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最...转载 2019-05-18 12:38:08 · 1084 阅读 · 0 评论 -
数据结构学习day5:递归与动态规划
1 递归与动态规划1.1 递归百度百科:程序调用自身的编程技巧称为递归( recursion)。递归核心问题:基础部分和递归部分。分析一个递归问题就是列出递归定义表达式的过程。例子1:斐波那契数列:0,1,1,2,3,5,8,13,21,34,55,89,144……基础部分0,1,递归部分为第3个元素开始为前两个数之和。python递归代码:def fib(n): i...原创 2019-01-30 20:22:13 · 357 阅读 · 0 评论 -
数据结构学习day4: 二叉树
1. 二叉树知识整理1.1 二叉树 二叉树是指每个结点最多为两个子树的树结构。具有如下特点:1)每个结点最多有两颗子树,结点的度最大为2;2)左子树和右子树有顺序,次序不能颠倒;3)即使某结点只有一个子树,也要区分左右子树。特殊二叉树及特点: 1)斜数:所有子树只有左子树或右子树; 2)满二叉树:所有分支结点均存在左右子树,并且所有叶子结点在同一层上...原创 2019-01-29 02:42:42 · 228 阅读 · 0 评论 -
数据结构学习day3:队列与堆排序
1 队列与堆排序知识1)队列队列是一种“先进先出”的数据结构or线性表,允许插入的一端称为队尾,允许删除的一段称为队头。队列通常分为两种类型:顺序队列(采用顺序存储,当长度固定时使用)和链式队列(采用链式存储,长度不确定时使用)队列两个基本操作:出队和入队。(参考博客及详细见:链接1)简言之,队列是从队尾进入,队头出(有点像管道,一端入另一端出),因此容易实现“先进先出”。(...原创 2019-01-28 15:55:05 · 302 阅读 · 0 评论 -
数据结构学习day7:DP实战
1 0-1背包问题1.1 问题阐述 有N个物品,和一个容量为V的背包。第i件物品的重量是w[i],价值是p[i]。求解背包装入哪些物品,获得的价值最大。问题分析:1)目标:背包价值最大;约束条件:所装入背包的物品重量之和不超过V。 2)设集合表示n个物品,该问题的某一个最优解集合为; 3)最优子结...原创 2019-02-01 21:23:04 · 348 阅读 · 0 评论 -
数据结构学习day2:单链表
1 单链表知识整理1)数组回顾数组:是相同数据类型的元素按一定顺序排列的集合。数组在内存中连续,会自动生成连续的下标。2)链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的...原创 2019-01-27 16:40:06 · 330 阅读 · 0 评论 -
数据结构学习day6:递归实战
1 回归递归递归是指程序调用自身的编程技巧。一般思路:写出递归公式(基础部分和递归部分),编写程序。2 # leetcode # 17. Letter Combinations of a Phone Number问题如图:solution demo:思路:2-9每个数字代表一串字符,需要一个dict,存储每个数字所代表的字符串;递归思路:递归基础部分直接返回,递归部分,遍历...原创 2019-01-31 19:21:58 · 198 阅读 · 0 评论 -
数据结构学习day1:hash table
1.对于hash的认识hash 函数:value = hash(key),有点像python中的dict(若理解有误,望指正)。常用的hash table:是根据关键码值(key value)而直接进行访问的数据结构,通过将(key value)映射到表中一个位置,以加快查找速度。hash table设计与思想见博客:见链接12. LeetCode #1. two sumLeetC...原创 2019-01-26 14:01:07 · 439 阅读 · 0 评论