![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 87
阿如村保安
不当废物
展开
-
秋招复习之堆
堆是一棵完全二叉树,根据成立条件可分为大顶堆和小顶堆。大(小)顶堆的堆顶元素是最大(小)的。优先队列的定义是具有出队优先级的队列,通常使用堆来实现。堆的常用操作及其对应的时间复杂度包括:元素入堆 O(logn)、堆顶元素出堆 O(logn) 和访问堆顶元素 O(1) 等。完全二叉树非常适合用数组表示,因此我们通常使用数组来存储堆。堆化操作用于维护堆的性质,在入堆和出堆操作中都会用到。输入 n 个元素并建堆的时间复杂度可以优化至 O(n) ,非常高效。原创 2024-01-07 23:07:09 · 975 阅读 · 0 评论 -
求两个数之间的最小公约数
今天做每日一题:2807. 在链表中插入最大公约数 - 力扣(LeetCode),就在想怎么求两个数之间的最小公约数,然后发现有个博客总结的得很好但也有点自己的想法,于是记录下来,我也是真的超爱写博客了。当数较小时(不超过64位),用欧几里得算法(取余)或者更相减损术;当数太大时,用stein算法,此算法只有整数的移位和加减法。加油加油,今天熬熬夜。原创 2024-01-06 23:53:25 · 1357 阅读 · 0 评论 -
秋招复习之树
二叉树是一种非线性数据结构,体现“一分为二”的分治逻辑。每个二叉树节点包含一个值以及两个指针,分别指向其左子节点和右子节点。对于二叉树中的某个节点,其左(右)子节点及其以下形成的树被称为该节点的左(右)子树。二叉树的相关术语包括根节点、叶节点、层、度、边、高度和深度等。二叉树的初始化、节点插入和节点删除操作与链表操作方法类似。常见的二叉树类型有完美二叉树、完全二叉树、完满二叉树和平衡二叉树。完美二叉树是最理想的状态,而链表是退化后的最差状态。原创 2024-01-06 01:00:00 · 982 阅读 · 0 评论 -
秋招复习之哈希表
输入key,哈希表能够在 O(1) 时间内查询到value,效率非常高。常见的哈希表操作包括查询、添加键值对、删除键值对和遍历哈希表等。哈希函数将key映射为数组索引,从而访问对应桶并获取value。两个不同的key可能在经过哈希函数后得到相同的数组索引,导致查询结果出错,这种现象被称为哈希冲突。哈希表容量越大,哈希冲突的概率就越低。因此可以通过扩容哈希表来缓解哈希冲突。与数组扩容类似,哈希表扩容操作的开销很大。原创 2024-01-05 14:36:50 · 1106 阅读 · 0 评论 -
秋招复习之栈与队列
栈是一种遵循先入后出原则的数据结构,可通过数组或链表来实现。在时间效率方面,栈的数组实现具有较高的平均效率,但在扩容过程中,单次入栈操作的时间复杂度会劣化至 O(n)。相比之下,栈的链表实现具有更为稳定的效率表现。在空间效率方面,栈的数组实现可能导致一定程度的空间浪费。但需要注意的是,链表节点所占用的内存空间比数组元素更大。队列是一种遵循先入先出原则的数据结构,同样可以通过数组或链表来实现。在时间效率和空间效率的对比上,队列的结论与前述栈的结论相似。原创 2024-01-05 02:15:00 · 855 阅读 · 0 评论 -
秋招复习之数组与链表
复习数组和链表,包括数组链表和列表,以及他们的一些基本操作,这里主要写的Java和cpp语言。语言真的烦的很,不同的项目就要用不同的语言,所以都复习一下,但是很容易搞混。原创 2024-01-04 20:22:20 · 853 阅读 · 0 评论 -
秋招复习之数据结构
秋招复习之数据结构,数据结构分类、基本数据类型、字符编码、数字编码等基础知识。原创 2024-01-04 18:15:52 · 522 阅读 · 0 评论 -
秋招复习之迭代与递归
复习中ing,递归我总是迷迷糊糊的,这里有点醍醐灌顶。迭代是自下而上,从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。递归是自上而下,找到终止条件,然后向上“归”。总之,选择迭代还是递归取决于特定问题的性质。在编程实践中,权衡两者的优劣并根据情境选择合适的方法至关重要。原创 2024-01-02 14:01:50 · 1000 阅读 · 0 评论 -
DWA(dynamic window approach)算法学习
在机器人的路径规划中少不了DWA算法,学习!!!之后还要研究下欧几里得距离转换算法(Euclidean Distance Transform, EDT),建立EDT梯度图衡量障碍物代价以优化障碍物判断优化。原创 2023-12-12 23:16:20 · 709 阅读 · 1 评论 -
D*算法学习
之前弄了离线的,当然离线的Dijkstra算法没总结,A*算法和Dijistra算法的区别在于有无估价值Dijistra算法相当于A*算法中估价值为0的情况。然后今天看了下适合动态的D*算法。最短路经算法简介(Dijkstra算法,A*算法,D*算法)(转载)_d星算法和dijkstar算法-CSDN博客D*路径搜索算法原理解析及Python实现_d*算法-CSDN博客D*算法超详解 (D星算法 / Dynamic A*算法/ Dstar算法)(死循环解决--跟其他资料不一样奥)-CSDN博客。原创 2023-12-02 22:15:48 · 388 阅读 · 0 评论 -
力扣刷题篇之每日一题(2023年12月ing)
十二月啦,开始!!!!12.01ing。原创 2023-12-01 11:55:00 · 162 阅读 · 0 评论 -
弗洛伊德算法(Floyd)和路径平滑弗洛伊德算法(Smooth Floyd)学习
昨天看了下A*算法(A-Star(A*)寻路算法原理与实现 - 知乎 (zhihu.com)),发现常见的a*算法的结果是一串用来表示所经过的路径点坐标。但是这样的路径通常是有“锯齿”的,并不符合现实中的智能表现。因此,需要进一步的进行平滑处理,比如平滑佛洛依德算法(佛洛依德路径平滑算法(FLOYD) - 知乎 (zhihu.com)在探索的过程中发现其和最短路径弗洛伊德(Floyd(弗洛伊德)算法 详解+模板_弗洛伊德算法代码-CSDN博客。原创 2023-12-01 05:00:00 · 2748 阅读 · 2 评论 -
A*算法学习
在总结2023华为软件精英挑战赛时,发现自己还有很多技术细节没搞懂,这里学习了静态全局路径规划最常见的A*算法。原创 2023-11-30 05:00:00 · 2306 阅读 · 0 评论 -
力扣刷题篇之分治
刷题按照:[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)参考:「五大常用算法」一文搞懂分治算法 - 知乎 (zhihu.com)分治算法(divide and conquer)是五大常用算法(分治算法、动态规划算法、贪心算法、回溯法、分治界限法)之一,分治,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在计算机科学中,分治法原创 2023-11-29 19:00:28 · 424 阅读 · 0 评论 -
力扣刷题篇之递归
刷题按照:[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode),如图,因为是讲递归,所以所有题的首解都是给的递归。递归不要看全过程,看一次递归就好,可以参考三道题套路解决递归问题 | lyl's blog (lyl0724.github.io)原创 2023-11-27 22:12:09 · 375 阅读 · 0 评论 -
力扣刷题篇之排序算法
本系列是个人力扣刷题汇总,本文是排序算法。刷题顺序按照[力扣刷题攻略] 这个之前写的左神的课程笔记里也有:左程云算法与数据结构代码汇总之排序(Java)-CSDN博客本来想看 按照这个分类一个个解题的,但是好多都不是最优解甚至会超过时间限制,所以要看较为系统一点的排序算法还是看上面那个之前的汇总吧,只是没有希尔排序,原创 2023-11-24 21:45:30 · 1042 阅读 · 0 评论 -
力扣刷题篇之位运算
本系列是个人力扣刷题汇总,本文是数与位。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)位运算其实之前的左程云算法与数据结构代码汇总之排序(Java)-CSDN博客也有总结到过。原数异或0等于本身,原数异或本身等于0。异或可以看作无进位相加。布隆过滤器这里难一点,其他都很简单,开心!DC3算法还要去搞清楚一下。原创 2023-11-19 23:07:35 · 1254 阅读 · 0 评论 -
力扣刷题篇之数与位3
本系列是个人力扣刷题汇总,本文是数与位。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)数与位收尾了,有点东西,之前那个进制转换还有点需要掌握下多种方法,其他倒是都很简单,多敲!原创 2023-11-17 05:00:00 · 814 阅读 · 0 评论 -
力扣刷题篇之数与位2
把数与位的第二部分数值计算写完了,好简单!我好爱哈哈哈哈,继续加油,多敲多敲,我要找实习了。原创 2023-11-16 05:00:00 · 873 阅读 · 0 评论 -
力扣刷题篇之数与位1
今天把数与位的第一个部分,进制转换做完了,感觉大部分都是简单题,仔细想想也能自己敲出来,需要注意的是一些回文数和进制的处理需要牢记。多敲!原创 2023-11-15 22:32:53 · 206 阅读 · 0 评论 -
力扣刷题篇之栈与队列3
本系列是个人力扣刷题汇总,本文是栈与队列。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)今天先写这点题吧,明天修改。原创 2023-11-14 23:09:11 · 697 阅读 · 0 评论 -
力扣刷题篇之栈与队列2
本系列是个人力扣刷题汇总,本文是栈与队列。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)其实这个地方,很多用到了栈的思想,但没有用栈,这三部分的题感觉之后还要好好复习一下,还有面向对象的编程也要加强一下,多敲。原创 2023-11-11 21:39:47 · 332 阅读 · 2 评论 -
力扣刷题篇之字符串1
本系列是个人力扣刷题汇总,本文是字符串。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)原创 2023-11-10 19:44:17 · 635 阅读 · 0 评论 -
力扣刷题篇之栈与队列篇1(待修改)
本系列是个人力扣刷题汇总,本文是栈与队列。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)sorry,这几天我估计要降低下更新频率了。原创 2023-11-08 16:09:17 · 238 阅读 · 1 评论 -
力扣刷题篇之哈希表2
本系列是个人力扣刷题汇总,本文是哈希表。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)原创 2023-11-07 10:29:34 · 207 阅读 · 1 评论 -
力扣刷题篇之哈希表1
本系列是个人力扣刷题汇总,本文是哈希表。刷题顺序按照[力扣刷题攻略]原创 2023-11-06 14:27:14 · 535 阅读 · 1 评论 -
力扣刷题篇之链表2
本系列是个人力扣刷题,本文是链表。刷题顺序按照[力扣刷题攻略] 终于把链表总结完了,其实也是多敲敲就会了,全是套路啊,反转链表,链表的双指针...有个好现象就是越敲越也舒服了,掌握套路,多敲多练。原创 2023-11-05 19:50:03 · 335 阅读 · 1 评论 -
力扣刷题篇之每日一题(2023年11月完成)
想着每天都要刷每日一题的,但每次刷过了也没啥留下的,之后也容易忘,不如记录下来,一些知识,解题技巧,有趣的,碎碎念的。。。工作日就每日都更新,周末的题可能会留到周一更新。原创 2023-11-03 11:04:57 · 533 阅读 · 2 评论 -
力扣刷题篇之链表1
本系列是个人力扣刷题,本文是链表。刷题顺序按照[力扣刷题攻略] 。链表相对于数组而言要难一点,我也意识到自己对于树的知识点以及递归的套路还要加强理解,但总的而言,链表的题比较套路。多敲。这次总结了如下三部分的链表题。原创 2023-11-04 13:54:37 · 277 阅读 · 1 评论 -
力扣刷题篇之二维数组
本系列是个人力扣刷题,刷题顺序按照[力扣刷题攻略] 今天写了二维数组,要难一点,这篇文章的题目还要自己多敲敲最快的代码。原创 2023-11-02 17:43:45 · 304 阅读 · 1 评论 -
力扣刷题篇之一维数组
本系列是个人力扣刷题,本文是最简单的数组。刷题顺序按照[力扣刷题攻略] 都是很简单的题,多敲敲就会了。原创 2023-11-01 14:44:29 · 489 阅读 · 2 评论 -
数据结构与算法之二叉树2
本文总结了前中后序遍历,同时,还总结了搜索二叉树,完全二叉树,满二叉树,平衡二叉树的代码,这里重要的是黑盒的递归套路,还要多敲敲,以后树形dp的题要获取左右子树信息的都可以用。原创 2023-10-31 11:09:57 · 326 阅读 · 1 评论 -
算法与数据结构之二叉树1(待补充)
用递归和非递归两种方式实现二叉树的先序、中序、后序遍历;如何直观的打印一颗二叉树;如何完成二叉树的宽度优先遍历(常见题目:求一棵二叉树的宽度)原创 2023-10-30 10:07:59 · 214 阅读 · 1 评论 -
左程云算法与数据结构代码汇总之链表(Java)
本文讲链表(待补充完整)这一部分需要先把简单题敲熟,特殊的记下思路,也多敲几遍。原创 2023-10-27 10:00:00 · 322 阅读 · 1 评论 -
左程云算法与数据结构代码汇总之排序(Java)
排序的代码汇总。(后续还需补充)原创 2023-10-26 10:41:53 · 485 阅读 · 1 评论