数据结构与算法
文章平均质量分 87
我是夜阑的狗
当觉得自己菜的时候,就应该静下心来学习
展开
-
LeetCode刷题--- 138. 复制带随机指针的链表(哈希表+迭代)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第19篇文章,主要讲解的是LeetCode138. 复制带随机指针的链表(哈希表+迭代)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。以上就是今天要讲的内容,这一题还是比较容易被题意误导的,一开始我就改变了原链表的结构导致出错,后面看了各位大佬的题解就突然恍然大悟了。🌹 🌹 🌹。原创 2023-02-10 16:33:51 · 635 阅读 · 5 评论 -
LeetCode刷题--- 430. 扁平化多级双向链表(深度优先搜索)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第18篇文章,主要讲解是LeetCode430. 扁平化多级双向链表(深度优先搜索)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。原创 2023-02-08 20:33:25 · 403 阅读 · 0 评论 -
LeetCode刷题---21.合并两个有序链表(双指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第17篇文章,主要讲解是LeetCode21.合并两个有序链表(双指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。以上就是今天要讲的内容,这一题还是比较简单的,一看到这题的时候就立马想到同时遍历两个链表,然后把其中一个链表当做返回参数,让第二个链表的节点往里面插入即可。原创 2023-02-03 17:30:13 · 895 阅读 · 0 评论 -
LeetCode刷题---链表经典问题(双指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第16篇文章,主要讲解是LeetCode206. 反转链表(双指针-头插法)、203. 移除链表元素、328. 奇偶链表(双指针)和234. 回文链表(双指针-快慢指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。1、可以同时使用多个指针。原创 2023-02-01 16:24:03 · 466 阅读 · 2 评论 -
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第15篇文章,主要讲解是LeetCode19. 删除链表的倒数第 N 个结点(双指针-快慢指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。原创 2022-11-28 11:51:45 · 848 阅读 · 0 评论 -
LeetCode刷题---160. 相交链表(双指针-对撞指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第14篇文章,主要讲解是LeetCode160. 相交链表(双指针-对撞指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。原创 2022-11-21 18:24:21 · 836 阅读 · 0 评论 -
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第13篇文章,主要讲解是LeetCode142. 环形链表 II(双指针-快慢指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。原创 2022-11-10 22:05:59 · 1212 阅读 · 1 评论 -
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第10篇文章,主要讲解是LeetCode209. 长度最小的子数组(双指针-滑动窗口))。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。以上就是今天要讲的内容,做题的时候,就是奔着双指针的思路进行解决的,练习这么多次现在逐渐找到了点感觉。原创 2022-10-31 20:25:16 · 695 阅读 · 0 评论 -
LeetCode刷题---11. 盛最多水的容器(双指针-对撞指针)
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第9篇文章,主要讲解是LeetCode11. 盛最多水的容器(双指针-对撞指针)。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。以上就是今天要讲的内容,做题的时候,就是奔着双指针的思路进行解决的,联练习这么多次现在逐渐找到了点感觉。原创 2022-10-28 15:01:46 · 245 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--快速排序
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。快速排序是另外一种分治的排序算法,它将一个数组分成两个子数组,将两部分独立的排序。快速排序和归并排序 是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并从而将整个数组排序,而快速排序的 方式则是当两个数组都有序时,整个数组自然就有序了。原创 2022-10-26 14:24:46 · 189 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--归并排序
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。定义方法时,在方法内部调用方法本身,称之为递归.归并排序是分治思想的最典型的例子,上面的算法中,对a[lo…hi]进行排序,先将它分为a[lo…mid]和a[mid+1…hi] 两部分,分别通过递归调用将他们单独排序,最后将有序的子数组归并为最终的排序结果。原创 2022-10-08 21:28:04 · 374 阅读 · 0 评论 -
CSDN每日一练(Java)--合并序列
以上就是今天要讲的内容,一开始做题的时候,没有对题目要求理解清楚,所以写出来的代码通过率很低。然后重新对题目要求理了一遍之后,思路也清晰很多,当然本人也去百度查找一下源码来看一下别人的思路,不会写不丢人。字典序。原创 2022-10-22 14:46:00 · 153 阅读 · 2 评论 -
数据结构与算法(Java篇)笔记--希尔排序
之前我们学习过基础排序,包括冒泡排序,选择排序还有插入排序,并且对他们在最坏情况下的时间复杂度做了分析,发现都是O(N^2),而平方阶通过我们之前学习算法分析我们知道,随着输入规模的增大,时间成本将急剧上升,所以这些基本排序方法不能处理更大规模的问题,接下来我们学习一些高级的排序算法,争取降低算法的时间复杂度最高阶次幂。通过测试发现,在处理大批量数据时,希尔排序的性能确实高于插入排序。原创 2022-10-01 23:21:32 · 439 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--插入排序
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。插入排序使用了双层for循环,其中内层循环的循环体是真正完成排序的代码,所以,我们分析插入排序的时间复杂度,主要分析一下内层循环体的执行次数即可。按照大O推导法则,保留函数中的最高阶项那么最终插入排序的时间复杂度为O(N^2).原创 2022-09-15 15:41:32 · 272 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--选择排序
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。选择排序使用了双层for循环,其中外层循环完成了数据交换,内层循环完成了数据比较,所以我们分别统计数据交换次数和数据比较次数,根据大O推导法则,保留最高阶项,去除常数因子,时间复杂度为O(N^2);原创 2022-09-11 04:00:00 · 186 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--冒泡排序
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。冒泡排序的时间复杂度分析 冒泡排序使用了双层for循环,其中内层循环的循环体是真正完成排序的代码,所以,我们分析冒泡排序的时间复杂度,主要分析一下内层循环体的执行次数即可。按照大O推导法则,保留函数中的最高阶项那么最终冒泡排序的时间复杂度为O(N^2).原创 2022-09-09 16:58:22 · 180 阅读 · 0 评论 -
数据结构与算法(Java篇)笔记--Comparable接口
在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。在java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map,Math等等,都是以API的方式提供,这种方式的好处在于一次编写,多处使用。我们借鉴jdk的方式,也把算法封装到某个类中,那如果是这样,在我们写java代码之前,就需要先进行A原创 2022-09-09 14:43:08 · 624 阅读 · 0 评论