![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
朱家小旺
这个作者很懒,什么都没留下…
展开
-
差分数组
5615. 使数组互补的最少操作次数本周周赛题,在做题时忽略了上面的这个条件,求解答案总是超时。看题解用到差分数组,之前做题一直没有接触过。在此记录以便复习。差分数组:差分数组就是原始数组相邻元素之间的差。举个栗子,给出一个差分数组其实差分数组是一个辅助数组,从侧面来表示给定某一数组的变化,一般用来对数组进行区间修改的操作还是上面那个表里的栗子,我们需要进行以下操作:1、将区间【1,4】的数值全部加上32、将区间【3,5】的数值全部减去5你可以进行枚举。但是如果给你的数据量是1e5,操原创 2020-11-29 14:35:33 · 6281 阅读 · 3 评论 -
KMP字符串匹配算法代码(模板)
**KMP字符串匹配算法代码(模板)**#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;int next[105];//字符串里面某个字符之前的字符串所拥有的最大公共前后缀长度 //寻找前后缀的过程实质也是一个字符串的匹配 ,相当于2个自身进行匹配字符串 void get_next(char* p){//原创 2020-11-20 22:25:05 · 115 阅读 · 0 评论 -
背包问题整理
一、01背包题目:有N 件物品和一个容量为V的背包。第i件物品的重量是w[i] ,价值是v[i],求将哪些物品装入背包可使价值总和最大。原创 2020-10-19 22:54:46 · 364 阅读 · 0 评论 -
链表(c++)
一、单链表实现:#include<iostream>#include<vector>using namespace std;class intSLLnode{public: intSLLnode(){ next = 0; } intSLLnode(int i,intSLLnode *in = 0){info = i;next = in;}//private: int info; //用于存储信息 intSLLn原创 2020-10-10 11:46:20 · 309 阅读 · 0 评论 -
哈希表、红黑树、B树、B+树基础
一、哈希表也叫散列表,是根据关键码值而直接进行数据访问的数据结构。(把关键码值映射到表中一个位置来访问记录)映射函数叫做散列函数,存放记录的数组叫做散列表。散列查找过程分为两步:(1)在存储时通过散列函数计算记录的散列地址,并按此散列地址存储该记录。(2)当查找时,一样通过散列函数计算记录的散列地址,然后访问散列地址的记录。1.散列函数的构造方法(1)直接定址法:取关键字的某个线性函数值为散列地址f(key)=a*key+b (需要事先知道关键字分布,适合查找较小且连续的情况)(2)数字分析原创 2020-07-25 16:44:20 · 1565 阅读 · 0 评论 -
常见排序算法整理
1.冒泡排序:也称下沉排序,反复遍历要排序的列表,比较每对相邻的项目,如果他们顺序错误则交换他们。重复传递列表,知道不需要交换。代码实现:n = len(nums)for i in range(n): swapped = False for j in range(0,n-i-1): if nums[j]>nums[j+1]: nums[j],nums[j+1] = nums[j+1],nums[j] swapped = True if not swapped: bre原创 2020-07-22 15:36:29 · 168 阅读 · 0 评论 -
无向图两点间所有路径(python)
方法一,通过回溯查找假如我们要查找的图为:通过一个字典进行保存:graph = {"A":["B","C"], "B":["A","C","D"], "C":["A","B","D","E"], "D":["B","C","E","F"], "E":["C","D"], "F":["D"], ...原创 2020-05-25 14:38:58 · 8862 阅读 · 19 评论 -
图论
图的分类存图方式1.邻接矩阵空间复杂度一般为n*n一般不用。2.邻接表(主要)3.链式前向星(主要)无向图的存储相比右向图,需要双向加边。图的遍历一、DFS(深度优先搜索)遍历思想:基本思想:首先从图中某个顶点v0出发,访问此顶点,然后依次从v相邻的顶点出发深度优先遍历,直至图中所有与v路径相通的顶点都被访问了;若此时尚有顶点未被访问,则从中选一个顶点作为起始点,重复上述过程,...原创 2020-04-11 19:20:51 · 129 阅读 · 0 评论 -
数据结构与算法(一)
时间复杂度几条基本计算规则:1.基本操作:时间复杂度为O(1)2.顺序操作:按加法进行计算3.循环操作:按乘法进行计算4.分支操作:时间复杂度取最大值常见时间复杂度分析: 节点的实现class SingleNode(object): """单链表的结点""" def __init__(self,item): # _item存放数据元素 ...原创 2020-04-10 16:39:01 · 83 阅读 · 0 评论