![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
adamyoungjack
师傅领进门,修行看个人。
展开
-
递归算法
定义自己调用自己终止条件拆解参数应用场景电影院座位山,庙,和尚,故事盗梦空间示例菲波那切数列 :f(n) = f(n-1) + f(n-2),f(0) = 0, f(1) = 1试题力扣原创 2020-12-25 13:15:59 · 159 阅读 · 0 评论 -
滑动窗口Sliding Window
目的:减少while循环解决数组中的定长问题力扣209,1456原创 2020-12-25 13:15:31 · 132 阅读 · 0 评论 -
分治算法
顾名思义,就是分而治之用到了递归编程技巧和归并排序力扣169,53,215原创 2020-12-25 11:43:22 · 131 阅读 · 0 评论 -
排序算法
1. 简介1.1 常用术语时间复杂度:程序执行时间与数据输入规模的关系空间复杂度:程序存储空间与数据输入规模的关系稳定性:稳定:一组数据中,a在b前面并且a = b,排序后依旧a 依旧在b前面不稳定:一组数据中,a在b前面并且a=b,排序后a可能在b后面1.2 十大排序算法冒泡,插入,选择归并,快速桶排序,计数排序,基数排序堆排序,希尔排序Time排序:插入排序 + 归并排序1.3 面试考察点分析某个具体的排序算法(Time, Space, 稳定性)对比某几个排原创 2020-12-20 22:26:05 · 157 阅读 · 0 评论 -
Number数字
"""number类型:int,float,complex,bool操作:+ - * / % //函数:abs(), max(), min(), pow(x, y), sqrt(x)"""print(3)print(3 + 3)print(3 - 3)print(3 * 3)print(3 / 2)print(3 // 2)print(3 % 2)print(abs(-1))print(max(1, 2, 3, 4))print(min(1, 2, 3, 4.原创 2020-12-04 00:27:37 · 92 阅读 · 0 评论 -
String字符串
"""字符串:一个一个字符组成的数组 s = 'python'操作:查找:s[0] s[-1] 切片:s[:]函数: len(s) 包括空格 max(s):最大的字母 min(s):最小的字母字符串独有的函数:.语法s.count('p') s.isupper() islower() s.isdigit()数字 s.lower() s.upper() strip() 去左右两边空格s.lstrip() s.rstrip() swapcase() 大写变成小写,小写变成大写 s.replac.原创 2020-12-05 12:32:13 · 68 阅读 · 0 评论 -
Tuple元组
"""tuple元组:与list区别:1. 表示用()表示2.只能查3. 定义 (1,)操作:查,in, 切片函数:len(), max(), min(), list()"""a = (1, 2, 3, 4, 5)print(a)print(type(a))b = (50)print(b)print(type(b))c = (50,)print(c)print(type(c))# 1. 查找print(a[0])print(a[-1])# 2. 更改# T.原创 2020-12-04 13:49:15 · 54 阅读 · 0 评论 -
List列表
"""list列表:列表中相同类型是为数组操作:查找,增加,更新,删除函数:len(), max(), min(), reverse(), clear()迭代/遍历:1. for x in a 2. for index in range(len(a)) 3.comprehersion [expression if condition else station for element in iteration]"""a = [1, 2, 3, 4, 5]# 1. 查找print(a[2].原创 2020-12-04 01:03:31 · 196 阅读 · 0 评论 -
Dict字典
"""字典:有dict1 = {'key':'value', 'key2':'value2'}操作:查找:dict1['key'] 添加:dict1['key3']='value3' 修改:dict1['key'] = 'value4'删除:dict.pop('key') 存在:'key1' in dict 遍历:for k in dict1: print(k)for v in dict.values(): print(v) for k, v in dict1.items(): print(k,.原创 2020-12-05 12:07:36 · 236 阅读 · 1 评论 -
Set集合
"""集合:使用{},元素唯一性,无序性操作:查找:in 添加: add() 更新:update({}) 删除:pop() 随机删 remove(value)函数:len() max() min()操作符:- | & ^a = {1, 2, 3} b = {2, 5, 9}a - b:a有b没有 {1, 3}a | b:a有或b有,相当于aub(交集) {1, 2, 3, 5, 9}a & b:a有并且b有相当于 anb(并集) {2}a ^ b:a和b不同时有的元素 {.原创 2020-12-05 11:50:40 · 72 阅读 · 0 评论 -
Python数组
# 1. 创建数组a = []print(a)print(type(a))# 2. 添加元素# 0(1)和O(n)a.append(1)a.append(2)a.append(3)print(a)# 3. 插入元素# 0(n)a.insert(2, 99)print(a)# 4. 访问元素:用索引访问# 0(1)temp = a[2]print(temp)# 5. 更新元素# 先访问,在修改0(1)a[2] = 88print(a)# 6. 删除元素.原创 2020-12-02 20:42:45 · 256 阅读 · 0 评论 -
Python链表
"""Python链表操作"""import queuefrom collections import deque# 1. 创建链表linkedlist = deque()# 2. 添加元素# 2.1 末尾添加元素# 0(1)linkedlist.append(1)linkedlist.append(2)linkedlist.append(3)print(linkedlist)# 2.2 中间插入元素 insert(index, value)# 0(n) 先找再插#.原创 2020-12-02 20:43:34 · 105 阅读 · 0 评论 -
Python队列
"""Python队列常用操作"""import queuefrom collections import deque# 1. 创建队列(双端队列)queue = deque()# 2. 添加元素# 0(1)queue.append(1)queue.append(2)queue.append(3)print(queue)# 3. 获取即将出队的元素# 0(1)temp1 = queue[0]print(temp1)# 4. 删除即将出队的元素# 0(1)te.原创 2020-12-02 23:49:43 · 85 阅读 · 0 评论 -
Python栈
"""Python栈:LIFO:后进先出 杯子或桶机制Python表示方法:1. deque:双端队列 insert, delete速度快 一般不使用 from collections import deque s = deque([1, 2, 3]常用操作:append():尾部添加, pop():尾部删除, appendleft():头部添加 popleft():头部删除搭配使用:append(), pop()和appendleft(), p.原创 2020-12-06 00:34:09 · 87 阅读 · 1 评论 -
Python堆
"""Python堆:heap 三角形机制类别:大堆 :pop的时候取的永远是最大值 小堆:pop的时候取的永远是最小值Python表示:heapq包,在Java中是priorityQueue包 from heapq import heapify, heappush, heappop heapify(): 默认是小堆 heappush(): heappop():默认删除最小值 heaplargest():前n个最大的值 heapsmallest():.原创 2020-12-06 00:36:55 · 102 阅读 · 0 评论 -
Python树
"""Python树:体现父子关系概念:节点, 根节点:最上面的节点, 叶子节点:没有孩子的节点节点高度:节点到叶子结点的最长路径/边数节点深度:节点到根节点的最长路径/边数层:叶子结点到根节点的最长路径/边数 + 1 或 所有节点的个数树的高度:根节点到叶子结点的最长路径二叉树:每个节点最多有两个节点类别:普通二叉树:每个节点最多有两个子节点 满二叉树:除了叶子节点,每个节点都有左右两个子节点 完全二叉树:对树中的节点从上至下,从左至右进行编号,变好的节点与满二叉树的.原创 2020-12-06 00:37:47 · 917 阅读 · 0 评论 -
数据结构
1. 绪论1.1 数据结构的基本概念1.2 数据结构的内容1.3 算法1.4 算法描述1.5 算法性能评价1. 算法的时间性能分析2. 算法的空间性能分析3. 算法性能选择1.6 数据结构与C语言表示1. 数据结构与程序设计的关联性2. 结构化程序设计与函数的模块化3. 面向对象与抽象数据类型4. 算法描述规范与设计风格1.7 关于数据结构2. 线性表2.1 线性表的概念及其抽象数据类型定义1. 线性表的逻辑结构2. 线性表的抽象数据类型定义2.2 线性表的顺序存储1原创 2020-11-28 12:40:17 · 158 阅读 · 0 评论 -
C程序设计
1. 程序设计和C语言1.1 计算机程序1.2 计算机语言1.3 C语言的发展及其特点1.4 最简单的C语言程序1. 最简单的C语言程序举例2. C语言程序的结构1.5 运行C程序的步骤与方法1.6 程序设计的任务2. 算法——程序的灵魂2.1 算法2.2 简答的算法举例2.3 特性2.4 表示算法的方式2.4.1 自然语言2.4.2 流程图2.4.3 三种基本结构和改进的流程图2.4.4 N-S流程图2.4.5 伪代码2.4.6 计算机语言2.5 结构化程序设计方法原创 2020-11-16 00:57:19 · 388 阅读 · 0 评论 -
Python3数据类型之列表(List)类型
1. 定义1.1 简介专门用于存储 一串数据,存储的数据成为元素1.2 格式list 用[]定义,元素之间使用,分割1.3 特点list的索引从0开始索引就是元素在list中的位置编号元素可以为不同类型"""列表定义的格式:列表变量的名字 = [元素1, 元素2, ……]使用格式: 列表变量[位置] 位置:也叫下标、索引"""# 列表定义name_list = ['mike', 'yoyo', 'rock', 'lily']#原创 2020-11-13 14:49:25 · 1857 阅读 · 2 评论 -
数据结构与算法
1. 数据结构分类复杂度时间复杂度T(n)=O(1)T(n)=O(n)T(n)=O(log(n))T(n)=O(nlog(n))T(n)=O(n的次方)T(n)=O(n的阶乘)最好时间复杂度最差时间复杂度平均时间复杂度均摊时间复杂度空间复杂度原创 2020-11-02 21:04:21 · 134 阅读 · 0 评论