摘要:
单向链表的去重 问题描述及分析 给定一个有序的链表,去除重复出现的元素,使每个元素只出现一次。例如一个单向链表为 1->1->2->2->3->4->4->∅ , 那么去重后得到的单向链表为 1->2->3->4->∅ 。 这里的链表保证是有序的,所以出现的重复元素都是相邻的,所以对整个链表进行一次 阅读全文
摘要:
单向链表的翻转 单向链表翻转 思路 假设链表是: 1->3->5->∅,所要求得的链表是 5->3->1->∅。只需要将每个节点的 next 指向其之前的一个节点即可。 对于第一个节点,如果是头节点不带数据的链表,那么只需要将其 next 指向 head;如果头节点带数据,第一个节点的 next 指 阅读全文
摘要:
单向链表 什么是单向链表 链表是一种物理储存单元上非连续、非顺序的储存结构。它由一系列结点(链表中每一个元素称为结点)组成,结点可动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 其实可以形象的认为,单向链表就好像一列火车。🤔 链表的节点就好像火车的 阅读全文
摘要:
前言 在本篇文章中,我将介绍 Dijkstra 算法解决 单源最短路径问题 ,同时还包含了具体路径的还原。以下是我自己的全部学习过程与思考,参考书籍为 《数据结构》(C++语言版) 邓俊辉 编著 。 (本文作者: Amαdeus,未经允许不得转载哦。) 最短路径问题 最短路径概述 在当今这个繁华的时 阅读全文
摘要:
#前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择。以下包含了我自己的全部思考和学习过程,参考书籍为 算法导论(第三版)。😊 (本文作者: Amαdeus,未经允许不得 阅读全文
摘要:
#前言 在这篇文章中,我将介绍动态规划求解 最大子段和(即最大子数组累加和问题) 的两种写法思路及其还原最优解,后面还包含了一点小小的优化。😊 (本文作者: Amαdeus,未经允许不得转载哦。) #最大子段和解析 ##最大子段和问题描述 给定一个长度为 len 的序列: a[0], a[1], 阅读全文
摘要:
基数排序解释 基数排序 基数排序 Radix Sort 是一种非基于比较的排序算法。在基数排序中,和计数排序、桶排序的思想类似,我们要再次用到桶这个东西。😉 *如果还有对计数排序、桶排序不了解的童鞋,可以看看这里哟~ ❤❤❤ 计数排序 桶排序 ❤❤❤ 基数排序思想 其基本思想是从数据的低位开始,按 阅读全文
摘要:
桶排序解释 桶排序思想 桶排序 是一种空间换取时间的排序方式,是非基于比较的。 桶排序 顾名思义,就是构建多个映射数据的桶,将数据放入桶内,对每个桶内元素进行单独排序。假设我们有 n 个待排序的元素,我们定义了 k 个桶,之后将这 n 个元素分配到 k 个桶中。我们一般每个桶的数据范围大小是 10。 阅读全文
摘要:
计数排序解释 计数排序思想 计数排序 的思想十分简单,就是统计每个数字出现的次数。它是一种非基于比较的排序算法,其是通过额外的空间换取时间的方式,来实现更加高效的排序。😇😇😇 计数排序步骤 1、假设我们有一个长度为 n 的待排序序列,其所有元素组成的集合为 S,集合的数据范围为 0 - k。 阅读全文
摘要:
快速排序解释 快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用。 (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序)❤❤❤ (本文作者: Amαdeus,未经允许不得转载哦。) 快速排序的分治模式 1、选取基准值,获取划分位置。将原数组 a[l, r] 划分为两个 阅读全文