数据结构
文章平均质量分 54
white and white
这个作者很懒,什么都没留下…
展开
-
Leetcode学习之238. 除自身以外数组的乘积
逐个计算,如果可以除法,只需要遍历一次得出整个数组的乘积,然后第二次遍历的时候,用总乘积除掉当前idx对应val即可。因此我们可以利用乘法,其实题目就需要把除去该数,其他的所有乘积,我们只需要遍历一遍,把该数组每个对应的数据项的左右乘数算出来即可,1. 新建左右前缀数组,用于存放当前idx所对应的数据的左右乘数。原创 2023-08-30 17:56:38 · 45 阅读 · 0 评论 -
Leetcode学习之 80.删除有序数组中的重复项 II
执行速度0ms,题目重点是原地删除以及只可以使用额外的O(1)空间。所以按照平常的新旧数组复制是不可行的。因此想到了利用双指针(fast,slow)利用元素交换下标的或者覆盖的方式进行删除。最后只需要返回slow的下标位置,就是题目所需要的删除后的数组长度啦。图中实例: nums = 0 0 1 1 1 1 2 3 3。原创 2023-08-04 11:33:09 · 71 阅读 · 0 评论 -
Leetcode学习之 12.整数转罗马数字
Leetcode 12.整数转罗马数字(middle)原创 2023-07-28 00:28:08 · 39 阅读 · 0 评论 -
通过Map映射替代递归形成一个层级树形结构数据
最近项目中遇到了层级树形结构,数据库存放着的是节点id,以及节点的父节点,刚开始是通过递归节点id作为下一层父节点id的形式,用很多条sql来进行查询直接得出的,,但是由于随着层数以及数据的增加,而且同一层级之间涉及到菜单优先级排序的问题,递归的sql及时是组装一起进行批量查询也需要将近 2s 的时间,这对于一个查询来说无疑是很慢的。因此后面更换了一种思路,通过一次性查询出所有的节点,最后在进行拼装。...原创 2022-06-30 14:51:17 · 591 阅读 · 0 评论 -
算法学习之单源最短路径问题---Dijkstra的JAVA实现
Dijkstra是用于计算从一个顶点到其余各顶点的最短路径算法(构建单源点的最短路径树),解决的是有权图中最短路径问题。由于每次都会选取当前起点以及经过中间点到目标点的最短距离,而不考虑其他未知点的因素,故而是一个基于局部最优解的贪心策略。因而,每当在已经确定的集合S中加入新的顶点v,都需要重新更新起点到其他点的最短距离。Dijkstra其实和Prim(普利姆)算法极其相似,但是Prim是构造一个图中的最小生成树,类似于在一个图中找出一条连接所有顶点的最短路径,而Dijkstra是找出起点到其他顶点的最短原创 2022-05-14 15:44:40 · 1558 阅读 · 0 评论 -
排序二叉树 插入数据的递归
item是要插入的数据递归方法如下:int BSTInsert(BTNode *&root,DataType item){ BTNode *p=root,*q=NULL; //q指向p的双亲 while(p!=NULL) { q=p; if(item==p->data) return 0; //item已存在不必插入 if(item<p->data) return (BSTInsert(p->left,item)); //在左子树中查找 el原创 2020-06-07 11:59:48 · 405 阅读 · 0 评论