数据结构与算法分析
文章平均质量分 82
菜鸟的成长之路。。。
boss-dog
当才华撑不起野心的时候,唯有安静读书......
展开
-
全排列(C++)
递归法实现全排列。全排列就是指n个元素随机组合,且不重复的所有排列方式。比如{1,2,3},就有123,132,213,231,312,321一共6种排列方式。递归法的思路: 假设要实现{1,2,3,4}的全排列,整体思路是以1作为第一个,剩下的三个数字做全排列,然后以2作为第一个,剩下的三个数字做全排列,3作为第一个,剩下的三个数字做全排列,4作为第一个,剩下的三个数字做全排列。 具体的,每一层的递归,假设先固定第一位是1,剩下对后面3位子序列进行全排列,这时固定子序列的第一位是2,以此类推转载 2021-11-10 09:52:38 · 13270 阅读 · 4 评论 -
《剑指Offer(第2版)》读书笔记
目录第1章 面试的流程1.3 面试的3个环节1.3.2 技术面试环节第2章 面试需要的基础知识2.2 编程语言2.2.1 C++第1章 面试的流程1.3 面试的3个环节1.3.2 技术面试环节1.扎实的基础知识P11传入值参数和传入引用参数有什么区别、什么时候需要为传入的引用参数加上consthttps://blog.csdn.net/sammie123321/article/details/96426851第2章 面试需要的基础知识2.2 编程语言2.2.1 C++在C++种,有哪4原创 2021-08-26 10:01:39 · 454 阅读 · 1 评论 -
KMP算法
1.什么是KMP因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP。2.KMP有什么用KMP主要应用在字符串匹配上。KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。所以如何记录已经匹配的文本内容,是KMP的重点,也是next数组肩负的重任。3.例题看一下传统暴力匹配算法基本思想https://leetcode-cn.com/problems/implement-strs转载 2021-08-15 15:20:21 · 219 阅读 · 0 评论 -
栈与队列note
03:栈与队列1.栈的特性2.顺序栈的动态分配3.顺序栈的静态分配4.栈(stack)的基本操作(STL)5.队列的特性6.顺序队列的动态分配7.顺序队列的静态分配8.循环队列的队满9.10.11.1.栈的特性需要两个指针,base指向栈底,top指向栈顶。2.顺序栈的动态分配3.顺序栈的静态分配4.栈(stack)的基本操作(STL)5.队列的特性6.顺序队列的动态分配7.顺序队列的静态分配8.循环队列的队满9.10.11....原创 2021-06-23 15:57:03 · 126 阅读 · 0 评论 -
线性表note
02:线性表1.特性2.顺序表3.链表4.链表(插入)5.链表(删除)6.双向链表7.双向链表(插入)8.双向链表(删除)9.循环链表10.静态链表11.静态链表(插入)12.静态链表(删除)13.双向静态链表14.双向静态链表(插入)15.双向静态链表(删除)练习0102031.特性2.顺序表3.链表4.链表(插入)5.链表(删除)6.双向链表7.双向链表(插入)8.双向链表(删除)9.循环链表10.静态链表上图的含义:data[ ]中存的是数据,right[原创 2021-06-21 20:52:02 · 183 阅读 · 0 评论 -
数据结构(Python)
数据结构1.数据结构介绍2.列表3.栈的介绍一级目录一级目录一级目录二级目录三级目录1.数据结构介绍1.定义数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。比如:列表、集合与字典等都是一种数据结构。2.数据结构的分类数据结构按照其逻辑结构可分为线性结构、树结构、图结构。线性结构:数据结构中的元素存在一对一的相互关系(比如列表中的数据是一个挨着一个)树结构:数据结构中的元素存在一对多的相互原创 2021-02-24 12:16:08 · 401 阅读 · 0 评论 -
Python实现:双向循环链表实践(凯撒加密和维吉尼亚加密)
问题描述:要求实现用户输入一个数使得26个字母的排列发生变化,例如用户输入3,输出结果:——DEFGHIJKLMNOPQRSTUVWXYZABC同时需要支持负数,例如用户输入-3,输出结果:——XYZABCDEFGHIJKLMNOPQRSTUVW下面程序中用到的知识点:Python ASCII码与字符相互转换https://www.runoob.com/python3/python3-ascii-character.htmlPython join()方法https://www.runoo原创 2020-06-28 19:12:44 · 480 阅读 · 0 评论 -
Python实现:循环链表——魔术师发牌问题和拉丁方阵
问题描述:魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示。魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上这样依次进行将13张牌全部翻出,准确无误。问题:牌的开始顺序是如何安排的?PS:下面方法来源于网上# 13张黑桃的牌:A、2、3、4、5、6、7、8、9、10、J、Q、K转载 2020-06-17 20:50:07 · 394 阅读 · 0 评论 -
Python实现:线性表——约瑟夫环
问题描述:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。看的视频中是用C语言写的,所以自原创 2020-06-15 21:40:56 · 466 阅读 · 2 评论