自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 【算法通关村第六关——其实很简单的树】

在前一关算法通关村第五关,我们介绍了Hash和队列的基本概念和常见算法,可以发现,不难发现,一些复杂的算法用Hash很容易解决,面试中算法题用Hash就显得没什么思维含量,所以一般作为第二选择。没有学会树,相当于数据结构白学,这一节,我们主要聊一聊树。定义树的原理与前面讲的链表本质上是一样的,只不过多了一个指针,如果是二叉树,只要在链表的定义上增加一个指针就可以了//定义二叉树int val;//定义N叉树int val;

2023-09-10 20:14:57 81 1

原创 【算法通关村第五关——LRU的设计与实现】

本文介绍了LRU(最近最少使用)缓存算法的原理、优缺点以及实现方法。LRU缓存算法通过使用Hash+双向链表维护数据的顺序,可以在O(1)的时间复杂度内完成数据的查找和淘汰操作,从而实现高效的缓存策略。然而,LRU缓存算法也存在一些局限性,如淘汰策略不够灵活和不适合大量数据等。尽管如此,LRU缓存算法仍然是计算机科学中常用的一种缓存实现方法,具有广泛的应用价值。希望通过本文的介绍,读者能够对LRU缓存算法有更深入的理解,以便在实际问题中灵活运用。

2023-09-03 20:42:28 116

原创 【算法通关村第五关——队列和Hash经典算法题】

在算法通关村第五关上一篇中我们介绍了队列和Hash的基本概念和用法。在这篇文章,我们先简单看几道队列和Hash的算法题。在今天的文章,我们讨论了两种使用栈和队列实现队列和栈的操作。首先,我们介绍了如何使用两个栈(一个用于入队操作,另一个用于出队操作)来实现一个先入先出队列。接着,我们讨论了如何使用两个队列(一个用于入队操作,另一个用于出队操作)来实现一个后入先出栈。这些方法都利用了栈和队列的特性,即后进先出(LIFO)和先进先出(FIFO)。

2023-09-01 10:12:20 106 1

原创 【算法通关村第五关——队列和Hash基础知识】

Hash在实际开发中大量使用,在许多复杂的算法问题中也经常使用,但是再算法里只能作为第二选项,因为复杂的算法问题用Hash很容易就能解决。至于队列,直接考队列的算法题几乎没有,大部分场景是作为高级算法的一个工具。Hash(哈希)是将任意长度的输入通过散列算法,转变为固定长度的输出的过程。Hash函数是这个算法的核心,它可以接受不同大小的输入,但在输出上始终具有固定的长度。开放寻址法是将哈希表的每个槽直接存储键值对。当发生哈希冲突时,寻找下一个可用的槽来存储冲突的键值对,而不是使用额外的数据结构。具体的寻址方

2023-08-30 23:31:46 88

原创 【算法通关村第四关——逆波兰表达式】

逆波兰表达式,也叫后缀表达式,是一种数学表示法,其中运算符在操作数之后。表达式计算是编译原理、自然语言处理、文本分析等领域非常重要的问题,我们这里看一个相对中等的问题,逆波兰表达式。LeetCode150.根据 逆波兰表示法,求表达式的值。说明:1.有效的算符包括 +、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。2.注意两个整数之间的除法只保留整数部分。3.可以保证给定的逆波兰表达式总是有效的。也即表达式总会得出有效数值目不存在除数为 0 的情况。示例1。

2023-08-29 16:47:25 77 1

原创 【算法通关村第四关——计算机问题解决】

计算器也是非常常见的问题,我们看一个中等问题。LeetCode227.给你一个字符串表达式 s,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。

2023-08-28 22:45:43 45 1

原创 【算法通关村第四关——栈的经典算法问题】

栈有很多典型的题目,这些题目难度不大,但是对于新手来说有点吃力,大家可以慢慢理清思路后,实现代码。以上就是今天要讲的内容,本篇文章主要列举了栈常见的算法,其实并不是很多,我们简单熟悉一下, 加深印象,方便我们遇到复杂的算法题的时候可以灵活的挑选最适合解题的数据结构。

2023-08-21 09:15:00 52 1

原创 【算法通关村第三关——如何基于数组(或者链表)实现栈】

栈在工程中有大量的应用,而在算法中相对简单,而且在很多时候,该数据结构都是解决更高级问题的工具,可以直接使用,这里我们先理解栈的特征,实现原理已经在算法中如何应用。提示:以下是本篇文章正文内容,下面案例可供参考要学好算法, 就要对常用的数据结构有一定的了解,这样在遇到问题的时候,我们才能选择合适的数据结构去实现。

2023-08-20 14:18:33 63 1

原创 【算法通关村第三关——双指针的妙用】

LeetCode905,按奇偶排序数组。1.首先对整个数组实行翻转,例如[1,2,3,4,5,6,7] 我们先将其整体翻转成[7,6,5,4,3,2,1].注意:这里必须是有序数组,否则就会出现下图所示的问题,我哭,作者花了几分钟画的图,发现数组无序,怎么都对不上。3.最后将两个再次翻转就得到[5,6,7] 和[1,2,3,4],最终结果就是[5,6,7,1,2,3,4]例子2:nums = [0,1,2,2,3,0,4,2], val = 2。输入:nums = [1,2,3,4,5,6,7],k=3。

2023-08-06 21:45:22 47

原创 【算法通关村第三关——不简单的数组增删改查】

分析: 如果对于所有i

2023-07-28 10:22:19 68 1

原创 【算法通关村第二关——K个一组反转】

【代码】【算法通关村第二关——K个一组反转】】

2023-07-25 22:16:07 48

原创 【算法通关村第二关——指定区间反转】

在处理链表相关问题时,双指针和链表反转是非常有用的方法,可以解决许多情况下的问题。当遇到链表问题时,推荐使用这两种方法进行尝试。同时,建议在编写代码时结合画图的方式进行,这样可以更好地理解问题和编写代码,而不是死记硬背特定的代码。记住,理解和思考问题是解决问题的关键。

2023-07-23 22:18:53 54

原创 【算法通关村第二关——终于学会链表反转了】

先建立一个虚拟的结点ans,并且令ans.next = head,这样就会方便很多。链表反转在算法题中出现的频率特别高,是链表最重要的问题。输入:head = 1->2->3->4->5。输出:5->4->3->2->1。

2023-07-21 22:50:47 26 1

原创 【算法通关村第一关——链表黄金挑战笔记】

链表中环的问题

2023-07-21 18:26:55 57 1

原创 算法通关村第一关——链表白银挑战笔记

上一篇提到的三个算法题,在这一篇文章我们解答一下。

2023-07-19 16:02:27 90

原创 算法通关村第一关——链表青铜挑战笔记

链表基础入门,以及常见算法题

2023-07-18 00:04:39 238 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除