![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据分析阿宇君
一枚三岁的数据分析狮,记录学习与成长。
展开
-
广度优先遍历算法
前言 最近把做题遇到的一些知识点总结回顾,本人统计专业出身,故对计算机基础知识理解不多,欢迎批评指正。 定义 广度优先遍历算法是图的另一种基本遍历算法,其基本思想是尽最大程度辐射能够覆盖的节点,并对其进行访问。 以迷宫为例,深度优先搜索更像是一个人在走迷宫,遇到没有走过就标记,遇到走过就退一步重新走;而广度优先搜索则可以想象成一组人一起朝不同的方向走迷宫,当出现新的未走过的路的时候,可以理解成一个人有分身术,继续从不同的方向走,当相遇的时候则是合二为一。 自我理解 广度优先遍历就像在平静的湖面丢入一块石头,原创 2020-07-27 21:56:56 · 5438 阅读 · 0 评论 -
算法:分治,动态规划,贪心,回溯
1.分治 1.1 基本概念 即分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 1.2 分治法适用的情况 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。 3) 利用该问题分解出的子问题的解可以合并为该问题的解; 4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。 第一条特征是绝大原创 2020-07-30 10:11:09 · 476 阅读 · 0 评论 -
Python数据结构:一维开心消消乐
一维开心消消乐 题目内容: 开心消消乐我们都熟悉,我们可以用刚学过的栈来做一个“一维”的开心消消乐游戏,这个游戏输入一串字符,逐个消去相邻的相同字符对。 如果字符全部被消完,则输出不带引号的“None” 输入格式: 一个字符串,可能带有相邻的相同字符,如“aabbbc” 输出格式: 一个字符串,消去了相邻的成对字符,如“bc” class stackDT: def __init__(sel...原创 2020-03-25 11:40:37 · 2656 阅读 · 3 评论 -
Python数据结构:有效的括号
有效的括号 题目内容: 给定一个只包括’(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式: True或False,表示该输入是否为合法括号串 class stackDT: '''构造栈''' def _...原创 2020-03-25 11:36:10 · 294 阅读 · 0 评论 -
Python数据结构:强迫症老板和他的洗碗工
强迫症老板和他的洗碗工 题目内容: 洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。 小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。 老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不...原创 2020-03-25 11:29:10 · 2028 阅读 · 2 评论 -
python数据结构:博物馆大盗问题
博物馆大盗问题 ❖大盗潜入博物馆,面前有5件宝物,分别有重量和价值,大盗的背包仅能负重20公斤,请问如何选择宝物,总价值最高? item weight value 1 2 3 2 3 4 3 4 8 4 5 8 5 9 10 ❖我们把m(i,W)记为: 前i(1<=i<=5)个...原创 2020-03-14 10:57:18 · 1270 阅读 · 1 评论 -
python数据结构:找零兑换问题的递归解法
找零兑换问题:递归解法改进代码 import time def recDC(coinValueList,change,knownResults): minCoins=change if change in coinValueList: #递归基本结束条件 knownResults[change]=1 #记录最优解 return 1 elif...原创 2020-03-14 10:54:51 · 376 阅读 · 0 评论 -
python数据结构:汉诺塔问题-递归
汉诺塔问题:递归思路 ❖将盘片塔从开始柱,经由中间柱,移动到目标柱: 首先将上层N-1个盘片的盘片塔,从开始柱,经由目标柱,移动到中间柱; 然后将第N个(最大的)盘片,从开始柱,移动到目标柱; 最后将放置在中间柱的N-1个盘片的盘片塔,经由开始柱,移动到目标柱。 ❖基本结束条件,也就是最小规模问题是:1个盘片的移动问题 def moveTower(height,fromPole,withPole,...原创 2020-03-14 10:52:08 · 196 阅读 · 0 评论 -
python数据结构:递归可视化-分形树
1 Python的海龟作图系统turtlemodule Python内置,随时可用,以LOGO语言的创意为基础 其意象为模拟海龟在沙滩上爬行而留下的足迹 爬行:forward(n); backward(n) 转向:left(a); right(a) 抬笔放笔:penup(); pendown() 笔属性:pensize(s); pencolor© 隐藏画笔:hideturtle() import ...原创 2020-03-14 10:49:37 · 516 阅读 · 0 评论 -
python数据结构: 递归1
1. 递归的定义 ❖递归 Recursion是一种解决问题的方法,其精髓在于将问题分解为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决。 ❖递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中调用自身。 ❖递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出奇简单,令人赞叹。 2.初识递归:数列求和 #用for循环写 def listsum...原创 2020-03-14 10:45:05 · 303 阅读 · 0 评论 -
python数据结构: 有序表
1. 有序表 ❖有序表是一种数据项依照其某可比性质(如整数大小、字母表先后)来决定在列表中的位置 ❖越“小”的数据项越靠近列表的头,越靠“前” 2.抽象数据类型:有序表OrderedList ❖OrderedList所定义的操作如下: OrderedList():创建一个空的有序表 add(item):在表中添加一个数据项,并保持整体顺序,此项原不存在 remove(item):从有序表中移除一个...原创 2020-03-14 10:42:30 · 1257 阅读 · 0 评论 -
python数据结构:列表
1.什么是列表 ❖在前面基本数据结构中,采用PythonList来实现了多种线性数据结构 ❖列表List是一种简单强大的数据集结构,提供了丰富的操作接口 但并不是所有的编程语言都提供了List数据类型,有时候需要程序员自己实现。 ❖列表是一种数据项按照相对位置存放的数据集 特别的,被称为“无序表unordered list” 其中数据项只按照存放位置来索引,如第1个、第2个……、最后一个等。(为了...原创 2020-03-14 10:26:18 · 722 阅读 · 1 评论 -
python数据结构:双端队列实现+回文词
1. 双端队列的定义 ❖双端队列Deque是一种有次序的数据集, 跟队列相似,其两端可以称作“首”“尾”端, 但deque中数据项既可以从队首加入,也可以从队尾加入;数据项也可以从两端移除。 ❖某种意义上说,双端队列集成了栈和队列的能力 ❖但双端队列并不具有内在的LIFO或者FIFO特性 如果用双端队列来模拟栈或队列,需要由使用者自行维护操作的一致性 2. 抽象数据类型Deque ❖deque定义...原创 2020-03-14 10:20:39 · 375 阅读 · 2 评论 -
python数据结构:队列的应用-热土豆问题
#定义队列 class Queue: #初始化 def _init_(self): self.items=[] def isEmpty(self): return self.items==[] #插入:队尾 def enqueue(self,item): self.items.insert(0,item) ...原创 2020-03-14 10:18:10 · 930 阅读 · 2 评论 -
python数据结构:队列Queue
1.抽象数据类型Queue 1.1 1.2 2.Python实现ADT Queue 采用List来容纳Queue的数据项 将List首端作为队列尾端;List的末端作为队列首端 enqueue()复杂度为O(n) dequeue()复杂度为O(1) class Queue: #初始化 def _init_(self): self.items=[] def...原创 2020-03-14 10:11:53 · 315 阅读 · 0 评论 -
pyhon数据结构:栈Stack
1.栈Stack 2.Stack操作样例 3.Stack的两端对应list设置 4.实现:尾端作为栈顶,插入或删除,其push/pop的时间复杂度为O(1) class Stack: #初始化 def _init_(self): self.items=[] def isEmpty(self): return self.items==[]...原创 2020-03-14 10:07:25 · 120 阅读 · 0 评论