数据结构和算法
文章平均质量分 97
数据结构好好学
12 26 25
用分享的方式成长,用有趣的眼光看世界
展开
-
字符串加密解密变换 问题
写在前面:经常会遇到那种给一个字符串,然后按照对应的变换规则,将相应的字符进行一些变换,如不同种类的键盘,或者是加密解密的编码规则等等。正文:对于这种问题,一般有两种解体思路:第一种就是按照题目中给的条件,将字符变换的规律找出,然后可以直接遍历转换第二种也就是如果是实在没有规律那就打个表解决一下建立两个字符数组(字符串)A1,A2 ; 一个代表原来的字符序列,另...原创 2019-04-09 17:07:45 · 1039 阅读 · 0 评论 -
从B站 (哔哩哔哩) 泄露的源码里发现了B站视频推荐的秘密
这两天闲来无事,回顾了一下年前B站沸沸扬扬的代码泄露事件,大致翻阅了一些泄露的代码发现了一些有意思的事情,其中就包括B站视频推荐算法的相关代码。不过后期 B站官方辟谣说是老版本代码,并且已经进行相应的防御措施,但是后端大体的架构还是不会变化太多,所以就仁者见仁智者见智了,仅供吃瓜参考。 首先回顾一下B站源码泄露事件始末 北京时间4月22日下午16点左右,一个名叫“ope...原创 2020-02-23 17:53:32 · 25180 阅读 · 28 评论 -
Facebook前身 哈佛大学“选美“网站核心算法 -- ELO等级分制度(附源码)
目录前言ELO等级分制度代码实现前言近段重温了经典电影《社交网络》,在电影中 ,Facebook创始人马克·扎克伯格在和女友分手后,受到好友爱德华多对核心算法的指引写下了哈佛女生“选美”网站Facemash,并一气之下黑了学校教务系统,将所有女生的照片放在Facemash上供人评比,网站大获成功,在上线两小时(周末凌晨两点到四点)内点击量达到了2万2千次,挤爆了哈佛的网...原创 2020-02-21 09:17:46 · 5783 阅读 · 5 评论 -
《数据结构》| 第九章 查找 知识梳理
查找 目录查找 1.了解查找的基本概念(查找表、查找、平均查找长度ASL)。2.熟练掌握静态查找表的查找算法(顺序查找、折半查找、分块查找)。会计算查找过程中的比较次数,会分析它们的算法时间复杂度,掌握它们的优缺点,能够根据实际情况选择适当的查找算法解决问题。3.掌握二叉排序树的定义以及查找、插入、删除等操作。掌握二叉排序树的查找算法性能分析方法,会计算二叉排序树的平均...原创 2019-01-21 23:47:18 · 10417 阅读 · 5 评论 -
《数据结构》| 第七章 图 知识梳理
图 目录1.了解图的基本概念(图的定义、有向图、无向图、完全图、带权图、邻接顶点、顶点的度、子图、路径、连通图等)2.熟练掌握图的两种存储结构(邻接矩阵表示法、邻接表表示法)。3.熟练掌握图的两种遍历算法(深度优先搜索遍历、广度优先搜索遍历)、能采用这两种遍历算法得到图的生成树。4.熟练掌握图的两种最小生成树(MST)算法思想(Prim、Kruskal)。5.掌握图的单源...原创 2019-01-21 23:46:42 · 14545 阅读 · 6 评论 -
《数据结构》| 第六章 树和二叉树 知识梳理
数组和广义表目录数组和广义表1.了解树和二叉树(满二叉树、完全二叉树)的基本概念、术语和性质。二叉树是度最大为2的有序树2.了解二叉树的顺序存储结构。3.熟练掌握二叉树的二叉链表存储结构及其实现。4.熟练掌握二叉树的先序、中序、后序和层次遍历算法。5.熟练掌握使用先序和中序(或中序和后序)两个遍历序列及标明空子树的先序遍历序列构造二叉树的方法。6.掌握二叉树中...原创 2019-01-21 23:45:53 · 18896 阅读 · 11 评论 -
《数据结构》| 第五章 数组和广义表 知识梳理
数组和广义表目录数组和广义表1.理解多维数组的行优先、列优先存储。2.理解特殊矩阵(对称矩阵、三角矩阵、稀疏矩阵)的压缩存储。3.了解广义表的相关概念及表示方法。系列索引:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 1.理解多维数组的行优先、列优先存储。 2.理解特殊矩阵(对称矩阵、三角矩阵、稀疏矩阵)的压缩存储。...原创 2019-01-21 21:07:38 · 10596 阅读 · 4 评论 -
《数据结构》| 第四章 串 知识梳理
串 目录1.理解串的基本概念。2.掌握串的一些基本操作及其实现。3.了解串的三种基本存储结构。系列索引:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 1.理解串的基本概念。2.掌握串的一些基本操作及其实现。 3.了解串的三种基本存储结构。...原创 2019-01-21 19:52:38 · 10039 阅读 · 2 评论 -
《数据结构》| 第三章 栈和队列 知识梳理
栈和队列目录 栈和队列1.理解解栈、队列的基本概念及其抽象数据类型。2.熟练掌握两种栈(顺序栈、链式栈)的入桟、出栈操作,并能利用栈解决实际问题。3.熟练掌握两种队列(顺序循环队列、链式队列)的入队、出队操作,并能利用队列解决实际问题。系列索引:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 1.理解解栈、队列的基本概念及其抽象数据类型。...原创 2019-01-21 18:40:11 · 20347 阅读 · 11 评论 -
《数据结构》| 第二章 线性表 知识梳理
线性表目录线性表1.掌握线性表的定义、逻辑结构及其抽象数据类型等基本概念。2.重点掌握线性表的两种存储结构(顺序存储、链式存储)。顺序存储:链式存储!!!结点3.掌握顺序表的各种操作(插入、删除等)实现及算法复杂度。4.掌握单链表的各种操作(插入、删除等)实现及算法复杂度。5.理解带头结点的单链表的头结点的作用。6.了解循环单链表...原创 2019-01-21 16:48:21 · 49666 阅读 · 19 评论 -
《数据结构》| 第一章 绪论 知识梳理
绪论目录绪论1.掌握数据、数据元素、抽象数据类型、数据结构、数据的逻辑结构与存储结构等概念。2.了解算法的定义、特性、算法的时间复杂度、算法的空间复杂度等概念,会对算法进行时间复杂度、空间复杂度分析。关于时间复杂度详见:一套图 搞懂“时间复杂度”系列索引:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 1.掌握数据、数据元素、抽象数...原创 2019-01-20 21:59:38 · 63925 阅读 · 27 评论 -
《数据结构》| 第十章 排序 知识梳理
排序目录第10章 排序了解排序的基本概念(数据序列、关键字、稳定性、排序分类)。熟练掌握各种内排序算法(直接插入排序、希尔排序、起泡排序、快速排序、简单选择排序、归并排序)的思想及其实现。10.2 插入排序直接插入排序希尔排序10.3 交换排序起泡排序快速排序 10.4 选择排序选择排序归并排序掌握上述6种排序算...原创 2019-01-20 12:28:59 · 11440 阅读 · 7 评论 -
《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理
写在前面:恰逢期末复习,用了几天时间结合老师勾画的重点以及课件教材等,将全书重要内容做了个大整合。一方面便于自己复习记忆,另一方面po出来让更多需要的人也可以做个参考。同类梳理: 《数据库系统概论》第五版(王珊版)全书知识梳理 《计算机组成原理》第五版(唐朔飞考研版) 全书知识梳理 《数据结构》C语言版 (清华严...原创 2019-01-20 11:40:20 · 191155 阅读 · 51 评论 -
费马大定理 及在程序设计竞赛中的应用(稿)
定理内容:当整数 时,关于 的方程 没有正整数解。关键词: (若题目中出先上述等式,可考虑费马大定理)解法:费马大定理主要有几种情况1)n = 1则等式变为 x + y = z。直接解。2) n = 2 等式为 x^2 + y^2 = z^2 ...原创 2018-08-28 11:09:27 · 2236 阅读 · 2 评论 -
数论四大定理 及在程序设计竞赛中的应用(稿)
(先挖个坑,有时间好好研究) 威尔逊定理用法:判别p是否为质数p可整除 (p-1)!+1 是p为质数的充要条件 证明:充分性如果p不是素数,当p=4时,显然(p-1)!≡6≡2(mod p),当p>4时,若p不是完全平方数,则存在两个不等的因数a,b使得ab=p,则(p-1)!≡nab≡0(mod p);若p是完全平方数即p=...原创 2018-08-28 10:30:43 · 969 阅读 · 2 评论 -
一套图 搞懂“时间复杂度”
写在前面:这篇文章是在公众号: 程序员小灰 中发布的。是我到目前为止所看到的关于时间复杂度介绍的最好的文章,简介 清晰 明了。所以拿来po出来 仅供学习交流,如侵则删。现已将此文收录至:《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理 正文:时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,...转载 2019-06-04 13:12:15 · 346883 阅读 · 248 评论 -
递推——斐波那契数列应用 | HDU - 2044 一只小蜜蜂... HDU 2041--超级楼梯
首先题目:一只小蜜蜂...Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 93009Accepted Submission(s): 33088Problem Description有一只经过训练的蜜蜂只能爬向右...原创 2018-07-23 22:46:50 · 470 阅读 · 2 评论 -
取模运算与取余运算区别联系 及 在ACM中的应用
综述:取模运算(“Modulo Operation”)和取余运算(“Complementation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。取模运算定义:给定一个正整数p,任意一个整数n,一定存在等式 : ...原创 2018-07-21 21:29:40 · 1353 阅读 · 0 评论 -
欧拉定理(数论定理)在 模幂运算中的应用
< 前言 > 在很多情况下,我们经常会遇到很大的数a和b,求a的b 次幂中的某位数是什么,对于运算,用暴力求解往往会溢出,并且非常麻烦。而 利用模运算性质和 欧拉定理中的数论定理,则可方便求解超高次幂相关问题。欧拉定理(数论定理) 内容在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,则: ...原创 2018-07-21 15:23:46 · 5807 阅读 · 8 评论 -
【数据结构】 最大连续子序列和 (四种算法逐级优化)
题目:01-复杂度1最大子列和问题(20 分)给定K个整数组成的序列{N1,N2, ...,NK},“连续子列”被定义为{Ni,Ni+1, ...,Nj},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }...原创 2018-10-12 20:39:02 · 1768 阅读 · 2 评论 -
“堆“ “栈“ “堆栈“ “队列“ 区别联系 | 数据结构
写在前面:三个都是有存取数据的功能,堆的强大之处在于可以存进去一堆数,每次取出这堆数的最小值,而且复杂度时log级别的,所以有一种排序叫做堆排。 栈和队列一个是头进头出,一个是头进尾出,用队列可以解决迷宫问题如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都还会问到,所以如果你不懂对你是损失很大的。...原创 2018-07-18 21:10:35 · 558 阅读 · 5 评论