数据结构&算法设计
文章平均质量分 68
以算法导论为核心,剑指offer为辅,采用java语言实现进行算法的基础学习
adventure.Li
南京信息工程大学本科,南京大学研究生,后端Javaer,2022年阿里巴巴编程之夏学员,2023年拼多多暑期实习生,记录个人学习、感悟以及经验分享。
展开
-
B树的插入、删除操作
一、简介B树是什么?1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:1、根结点至少有两个子女;2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数原创 2021-09-09 13:06:34 · 5167 阅读 · 0 评论 -
【重学数据结构】栈与队列
一、前言数据结构作为计算机学习的灵魂存在,是抽象实体的根本。是否能够数据结构是能否学会计算机的关键。为了加强对数据结构的学习,本人暑假进行了对DS的重新学习(路线:南大课程PPT、数据结构(严版)、王道为知识点概念到LeetCode、剑指Offer练习),以下是个人认为学习DS的几个关键步骤和需要回答并处理的问题,以后将会遵循这个步骤去写。二、概念理解...原创 2021-07-11 16:12:40 · 191 阅读 · 8 评论 -
【重学数据结构篇2 下】链表代码练习
一、准备工作为方便代码分享,便于有需要的朋友查看。我将练习代码放在了github上面,传送门。关于GitHub:之前只知道GitHub可以去嫖别人优秀的代码,自己之前上传代码也是直接网站拖拽。在昨天看了软件工程关于团队合作之后,才发现控制版本的必要性,于是刚开始学习编程的同学,建议将非盈利的一些代码可以分享到github上面,也记录自己的提交和修改代码的过程。而版本控主要有CVS(收费最开始)、SVN、GIT(开源)。git的使用IDEA进行配置集成git,也十分方面。二、代码练习1. 基原创 2021-07-05 17:42:03 · 137 阅读 · 0 评论 -
【重学数据结构篇2 上】线性表之基础知识
一、本次学习内容PPT学习部分线性表顺序表单链表循环链表双向链表多项式课本补充部分整体思维导图二、PPT学习(1)线性表的基本概念线性表的定义定义:n个数据元素的有限序列;原则上讲,线性表中表元素的数据类型可以不相同。但采用的存储表示可能会对其有限制;数组为广义的线性表。特点除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。直接前驱和直接后继描述了结点之间的逻辑关系(即邻接关系)注意:线原创 2021-07-04 16:20:38 · 519 阅读 · 2 评论 -
【重学数据结构篇1】- 基本概念与算法
–课程内容什么是数据结构抽象数据结构类型以及面向对象概念模板算法定义算法性能分析与度量–重点要求数据结构概念以及相关术语数据结构的三要素:逻辑结构、物理结构、数据运算算法时间复杂度和空间复杂度的分析与计算一、什么是数据结构信息、数据、数据元素、数据对象、数据类型是什么?信息:信息,指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。数据:数据是信息的载体(可理解为信息的具体化表示),是描述事物的数、字符、以及所有能输入到计算机中并被计算机识别处理的原创 2021-07-03 15:54:49 · 192 阅读 · 0 评论 -
狂刷OJ基础题两天,OJ机考成功半小时全部AC了
一、背景我们学校有个程序设计实践(C\C++版),成绩就是平时给了54题刷够50+就平时分满分,期末考试就是上机考试八题(大概分为数论、简单计算、时间显示、进制转换、字符串、递归、枚举几大类型),只要能够全部AC则可满分。二、总结心得感悟一定多刷题,而注重基础;如果有基础,考前也得刷刷熟悉熟悉(本人就是考前两天,连续刷了大概五十道基础题吧,我走的时候看了看榜单在我前面几个都是平时刷题上百道的,平时榜单前面的人,所以说千万要动手敲敲)虽然对于一个大三的老油条去考人家大一的OJ在线考试,但是如原创 2021-06-23 19:23:24 · 1406 阅读 · 3 评论 -
【LeetCode】《不同路径》的解题思考过程
一、题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?二、解决办法从数学角度拿到此题,可能不少朋友会想起来高中学习组合数学时做过,本人也是第一反应直接进行组合数计算不是很快,基本上只需要0ms解决问题,但由于细节问题,分析失误导致结果不对,然后开始了其他思路。数学功底较差或者没敢去想的朋友也别慌,还可以进行原创 2021-06-03 13:28:58 · 129 阅读 · 2 评论 -
【LeetCode】数论题目总结
一、基本问题辗转相除的gcd应用,求最大公约数 ,进而lcm求最小公倍数质数问题余数问题、位运算、进制转换约数定理: 分解质因数.然后通过排列组合求因数个数,比如有n个质因数,每个质因数重复k1,k2…kn次,那么因数的个数=(k1+1)(k2+1)…(kn+1)二、相关代码基本模板代码 /** * @param a * @param b * @return * 最大公约数 * 1.根据其值判断是否互质 * 2. *原创 2021-06-01 17:26:26 · 363 阅读 · 1 评论 -
【leetcode】递归练习总结
一、总结二、题目递归通用模板(1)具有返回值型int型 代表题目:斐波那、跳台阶、阶乘集合型 代表题目:杨辉三角;Java注意记录时的加入引用与实例问题。bool型 代表题目:2的幂、4的幂。 /** * @param n 传入参数 * @param pos 当前递归位置 * @param val 计算参数,子集的异或问题参考 * @param flag 状态判断,N皇后问题 * @return */ T recurs原创 2021-06-01 17:11:28 · 426 阅读 · 7 评论 -
【OJ练习】关于矩阵填数那些事儿
一、背景最近,学校的OJ截止日期快截止了,于是开始猛补。遇到一道回折矩阵的题目。想起来去年蓝桥杯也考了一道蛇形填数,说难不难,但动手实现起来,还是有点磕磕绊绊,下面来总结一下。二、解决思路分析数的填充路径规律可以动手在草稿纸上面画画,看看填数的规律,一般是走几步就重复此规律进行下去,所以说分析填充规律其实很简单,拿回形矩阵来说,规律就是往右走到尽头在下走到尽头再左、上如此循环直到结束。分析控制坐标设立一个计数的counter和一个i,j表示矩阵的横纵坐标,i控制左右,j控制 上下,然后注意原创 2021-05-25 19:23:14 · 567 阅读 · 1 评论 -
蓝桥杯Java组最后的挣扎【DP总结】
一、前言按照蓝桥杯的考点,我将DP放在最后来复习(也就是今天,明天则进行简单的IDE熟悉即可了)。对于DP,相信大家也早有听闻,它不是一两天能够提升起来的,而且也需要天赋,因此在此我就简单进行总结一下,培养一下这方面的感觉,希望省赛场上遇到此类题能够有下手方向,最后祝大家蓝桥杯旗开得胜。二、具体过程(1)为什么需要DP算法?DP一般采用使用dp数组存储解,因此在求最优解时能够优化时间复杂度。(即使不能够找到状态方程,也得学会采用空间换时间的思想去优化时间,多骗一点测试用例)算法时间效率高,代原创 2021-04-16 18:25:29 · 372 阅读 · 1 评论 -
蓝桥杯基础总结--模拟题
一、背景通过观察蓝桥杯真题以及其考纲,可以发现蓝桥杯考察的重点还是在逻辑思维,问题抽象,而逻辑思维更侧重数的处理。在2020年JavaB组中考察内存主要为字符处理、数组遍历(数字)、排序、简单基础编程(精度统计)、DP(难题),而没有复杂的模拟或者高级(需要综合应用集合)一点的编程题。说明蓝桥杯的趋势更加侧重思维了,平时务必注重思维的训练,多刷题,多刷题二叉树->DP。但这种思维题短时间内很难提升,因此我便做了模拟题的总结,顺便巩固基础编程,虽然2020年没有考察,但是按照一年考一年不考的规律估计原创 2021-04-14 10:12:18 · 446 阅读 · 1 评论 -
蓝桥杯基础知识巩固--矩阵填数和BFS的应用
一、前言今天,进行了近两年的蓝桥杯JavaB组真题整理,发现存在严重的基础薄弱问题。于是做了以下的基础知识巩固数量。二、代码矩阵填数package lq.questions.consolidate;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayLi原创 2021-04-13 18:20:59 · 150 阅读 · 0 评论 -
【初级算法】动态规划入门学习
一、前言在去年暑假的时候,一个朋友建议我开始每天三道LeetCode刷题。但是由于刚开始学习Java框架以及C和数据结构很久没有碰了,于是就一心学习spring去了,忽略了算法的重要性。最近春招以及考研复习数据结构,才发现算法的重要性。因此,开始了算法的学习。二、准备工作注:为便于梳理框架,我会进行在准备工作处进行该系列的整理,如果只想快速看本主题,请点击链接。基础语法知识C语言篇(1)基础类型使用,控制逻辑使用(2)STL库的基本使用(3)algorithm库的简单使用(结构体排序原创 2021-03-26 13:15:58 · 499 阅读 · 0 评论