![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
文章平均质量分 92
却把清梅嗅
Android开发者,爱好写作,曾多次作为嘉宾受邀参加GDG (Google Developer Groups)线下活动进行分享。
展开
-
每日一题 | 曾被反转链表支配的恐惧
前段时间看到掘金平台推出了每日算法打卡的活动,感觉挺好,好巧不巧打开LeetCode的每日一题刚好是 反转链表,这道去年年初面试字节跳动挂掉的算法题,趁这个机会把之前算法的记忆捡回来。Date: 2021-03-21 Week121、反转链表 II难度:Medium题目描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。..原创 2021-03-21 22:27:36 · 524 阅读 · 0 评论 -
哈希映射用法及算法例题
本文为博主算法学习过程中的学习笔记,主要内容来源于其他平台或书籍,出处请参考下方 参考&感谢 一节。用法哈希映射 是用于存储 (key, value) 键值对的一种实现。使用哈希映射的第一个场景是,我们 需要更多的信息,而不仅仅是键。然后通过哈希映射 建立密钥与信息之间的映射关系。另一个常见的场景是 按键聚合所有信息。我们也可以使用哈希映射来实现这一目标。例题1、两数之和...原创 2020-03-09 01:06:01 · 7869 阅读 · 2 评论 -
哈希集合用法及算法例题
本文为博主算法学习过程中的学习笔记,主要内容来源于其他平台或书籍,出处请参考下方 参考&感谢 一节。用法哈希集 是集合的实现之一,它是一种存储 不重复值 的数据结构。因此,通常,使用哈希集来检查该值是否已经出现过。让我们来看一个例子:给定一个整数数组,查找数组是否包含任何重复项。这是一个典型的问题,可以通过哈希集来解决。你可以简单地迭代每个值并将值插入集合中。 如果...原创 2020-03-09 01:05:19 · 2409 阅读 · 0 评论 -
哈希表原理及简单设计
本文为博主算法学习过程中的学习笔记,主要内容来源于其他平台或书籍,出处请参考下方 参考&感谢 一节。介绍哈希表 是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。有两种不同类型的哈希表:哈希集合 和 哈希映射。哈希集合是 集合 数据结构的实现之一,用于存储 非重复值。哈希映射是 映射 数据结构的实现之一,用于存储(key, value)键值对。通过选择合适的...原创 2020-03-09 01:04:44 · 1541 阅读 · 0 评论 -
运用递归解决二叉树相关问题
在之前的章节中,我们已经介绍了如何解决树的遍历问题。我们也已经尝试过使用递归解决树的为 前序遍历 、 中序遍历 和 后序遍历 问题。事实上,递归 是解决树相关问题的最有效和最常用的方法之一。本节中,我们将会介绍两种典型的递归方法。解决方案本小节内容节选自 LeetCode:运用递归解决树的问题 .递归是解决树的相关问题最有效和最常用的方法之一。我们知道,树可以以递归的方式定义为一个...原创 2020-03-04 00:30:19 · 910 阅读 · 0 评论 -
二叉树的递归与迭代遍历
二叉树的递归与迭代遍历本文将针对二叉树中几种常见的遍历方法进行介绍。遍历方式前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。中序遍历中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。后序遍历后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点。递归实现递归实现二叉树的遍历是非常简单的,其核心就是 深度优先搜索(DFS) 算法。由于比较简单,...原创 2020-02-16 00:36:14 · 1051 阅读 · 0 评论 -
栈和深度优先搜索(DFS)
与 BFS 类似,深度优先搜索(DFS)是用于在树/图中遍历/搜索的另一种重要算法。也可以在更抽象的场景中使用。正如树的遍历中所提到的,我们可以用 DFS 进行 前序遍历,中序遍历 和 后序遍历。在这三个遍历顺序中有一个共同的特性:除非我们到达最深的结点,否则我们永远不会回溯。这也是 DFS 和 BFS 之间最大的区别,BFS永远不会深入探索,除非它已经在当前层级访问了所有结点。模版递归...原创 2020-02-13 23:00:44 · 8065 阅读 · 1 评论 -
栈的设计与算法例题
栈的实现栈的实现比队列容易。动态数组 足以实现堆栈结构。这里LeetCode官方提供了一个简单的实现供参考:// "static void main" must be defined in a public class.class MyStack { private List<Integer> data; // store elements...原创 2020-02-12 01:50:10 · 2172 阅读 · 0 评论 -
队列和广度优先搜索
广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径。思路1. 结点的处理顺序在第一轮中,我们处理根结点。在第二轮中,我们处理根结点旁边的结点;在第三轮中,我们处理距根结点两步的结点;等等等等。与树的层序遍历类似,越是接近根结点的结点将越早地遍历。如果在第 k 轮中将结点 X 添加到队列中,则根结点与 X 之间的最短路径的长度恰好是 k。也就是说,第一次找到目标结点时...原创 2020-02-08 02:34:42 · 2492 阅读 · 1 评论 -
循环与循环双端队列
循环队列 是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为 环形缓冲器。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。为什么使用循环队列?这里我们先对 队列 的简单实现进行简单展示,队...原创 2020-01-20 23:12:12 · 2382 阅读 · 0 评论 -
弗洛伊德的乌龟与兔子
弗洛伊德的乌龟与兔子Floyd 判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,以及判断环的起点与长度的算法。结论1、如果链表上存在环,那么在某个环上以不同速度前进的2个指针必定会在某个时刻相遇;2、根据结论1找到的相遇点可找...原创 2020-01-19 22:06:14 · 2052 阅读 · 0 评论