
算法提升
文章平均质量分 85
算法提升,大厂内卷,人生无常,大厂包小厂
master_chenchengg
一个正在寻找新方向转行的新手小白,嘤嘤嘤,希望充实提升自己,正在努力学习中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法探险记:贪婪之心
贪婪算法是一种在每一步都采取看起来当前最佳的解决方案的策略。它并不保证全局最优解,但在很多情况下,尤其是在资源分配、排序和组合优化问题中,贪婪算法能够快速找到足够好的解。原创 2024-07-10 18:15:28 · 946 阅读 · 0 评论 -
数据结构之旅:链表的魅力
链表是一种线性数据结构,但与数组不同的是,它并不存储在连续的内存空间中。链表中的每个元素称为节点,包含数据和指向下一个节点的指针。这种结构赋予了链表动态扩展和收缩的能力,使得插入和删除操作更加灵活。原创 2024-07-10 15:21:23 · 415 阅读 · 0 评论 -
数据结构-链表:反转的艺术
链表是一种动态数据结构,它不像数组那样需要连续的内存空间,而是通过指针将分散的内存单元连接起来。在链表中,每个元素(节点)包含两部分:存储数据的域和指向下一个节点的指针。原创 2024-07-10 12:50:01 · 958 阅读 · 0 评论 -
数据结构-队列:C++中的“先来先服务”法则
队列是一种线性数据结构,它只允许在队尾(rear)进行插入操作,在队首(front)进行删除操作。这种结构确保了元素的顺序性,即最先加入队列的元素将最先被处理。原创 2024-07-10 10:44:40 · 637 阅读 · 0 评论 -
数据结构-栈:探秘C++中的“后进先出”法则
栈是一种只能在一端进行插入和删除操作的线性数据结构。这端通常被称为“栈顶”,而另一端则被称为“栈底”。当你往栈中添加元素时,新元素会被放置在栈顶;当你从栈中移除元素时,也是从栈顶开始移除。这种操作模式决定了栈的“后进先出”特性。原创 2024-07-10 08:27:13 · 412 阅读 · 0 评论 -
数据结构-队列:揭秘双端队列的魅力
双端队列,或称Deque(发音类似于“deck”),是一种可以在两端进行插入和删除操作的队列。这意味着,无论是在队首还是队尾,你都可以轻松地添加或移除元素,就像在一条双车道的高速公路上,车辆可以从两边自由进出一样。// 使用deque... }(memory);// 使用deque...原创 2024-07-10 05:18:12 · 942 阅读 · 0 评论 -
数据结构-队列:走进阻塞队列的奇妙世界
阻塞队列是一种具有特殊行为的队列,当队列为空时,从队列中获取元素的操作将会被阻塞,直到队列中有元素为止;同样,当队列满时,向队列中添加元素的操作也会被阻塞,直到队列中有可用的空间。这种机制非常适合用于多线程环境中的任务调度和资源管理。原创 2024-07-10 02:43:12 · 583 阅读 · 0 评论 -
数据结构-二叉树:探索C++中的枝繁叶茂
二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。这种结构允许数据以层次形式存储,便于快速定位和检索。在二叉树中,如果左子节点存在,则它的值小于父节点;右子节点则相反,它的值大于父节点。这样的规则让二叉树在排序和查找场景下大放异彩。原创 2024-07-10 00:12:29 · 423 阅读 · 0 评论 -
数据结构-堆:掌握C++中的黄金法则
堆是一种树形数据结构,通常实现为二叉堆,分为最大堆和最小堆。在最大堆中,父节点总是大于或等于其子节点;而在最小堆中,情况则相反。堆的美妙之处在于,它可以保证根节点是所有元素中的最大值(最大堆)或最小值(最小堆),这使得查找最大或最小元素变得极为快速。原创 2024-07-09 21:49:13 · 433 阅读 · 0 评论 -
在二叉树中分配硬币:一场关于平衡与最优解的冒险
在二叉树中分配硬币的问题,可以这样描述:给定一棵二叉树,每个节点代表一个孩子,初始时每个孩子手上没有硬币。我们的目标是从根节点出发,沿着二叉树向下走,向孩子分配硬币,使得每个孩子至少有一个硬币。但是,我们只能在节点处做出决策,即决定是否从父节点那里拿走硬币给子节点。问题的关键在于,我们需要找出一个方案,使得总的硬币移动次数最少。原创 2024-07-09 19:02:42 · 783 阅读 · 0 评论 -
数据结构-进阶:二叉搜索树的魅力与奥秘
左子树中所有节点的值小于该节点的值。右子树中所有节点的值大于该节点的值。左右子树也分别满足上述性质。原创 2024-07-09 16:35:34 · 660 阅读 · 0 评论 -
数据结构-树:走进AVL树的奇妙世界
AVL树是以发明者G.M. Adelson-Velsky和E.M. Landis的名字命名的一种自平衡二叉搜索树。它通过动态维护树的平衡因子(左子树高度与右子树高度之差),确保任意节点的平衡因子绝对值不超过1,从而保证了树的高度始终处于对数级别,使得搜索、插入和删除操作均能在O(log N)时间内完成。原创 2024-07-09 14:36:19 · 1136 阅读 · 0 评论 -
数据结构-树:探索红黑树的魅力
红黑树是一种自平衡的二叉查找树,它的每个节点都包含一个颜色属性,可以是红色或黑色。通过对任何路径上经过的红色节点数量进行控制,红黑树能够保持良好的平衡性,从而保证了操作的效率。原创 2024-07-09 11:50:36 · 683 阅读 · 0 评论 -
相向双指针:寻找数据中的和谐旋律
相向双指针,顾名思义,是指在数据结构(通常是数组或列表)的两端分别设置两个指针,它们向中心移动,直到满足某种条件或相遇为止。这种技术在处理排序或部分排序的数据时特别有效,因为它能够避免不必要的比较,从而达到较高的效率。原创 2024-07-09 09:09:59 · 1107 阅读 · 0 评论 -
链表:反转的魅力与艺术
链表,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的反转,即将链表的方向颠倒,原本的尾部节点变为头部,而头部节点则成为尾部。这一操作看似简单,实则考验着开发者对链表结构的理解和算法设计的能力。原创 2024-07-09 07:12:36 · 825 阅读 · 0 评论 -
单调栈:算法世界里的高效守卫者
单调栈,顾名思义,是一种特殊类型的栈,它的特点是栈内的元素保持单调递增或单调递减的顺序。这种数据结构在处理一系列元素,尤其是需要快速查找局部最大值或最小值的场景时,展现出了非凡的能力。单调栈的核心优势在于其高效性,通过维护栈内元素的单调性,它能够避免不必要的比较和搜索,大大提升了算法的执行效率。原创 2024-07-09 04:35:48 · 990 阅读 · 0 评论 -
Hash表:解锁无重复字符的最长子串之谜
哈希表,又称为散列表,是一种根据键(key)而直接访问在内存存储位置的数据结构。通过使用哈希函数,哈希表能在常数时间内完成数据的查找、插入和删除操作。在处理大量数据和复杂查询时,哈希表的表现尤为出色。原创 2024-07-09 02:00:46 · 885 阅读 · 0 评论 -
排序算法:让杂乱无章的数据变得井然有序
排序,简单来说,就是按照一定的规则对数据进行排列。在计算机科学中,排序算法是基础也是关键,它们能够帮助我们高效地组织数据,无论是数据库中的记录检索,还是搜索引擎的结果排序,都离不开它们的身影。C++标准库中的头文件提供了多种排序函数,如sort()等,它们内部实现了多种高效的排序算法,如快速排序、归并排序等。原创 2024-07-08 23:05:57 · 819 阅读 · 0 评论 -
最短路径:从点A到点B的最优旅程
最短路径问题,简而言之,就是在给定的图中找到两个顶点之间的最短路径。这里,“最短”通常指的是边权之和最小。在计算机科学中,这个问题有着多种算法解决方案,其中最为著名的包括Dijkstra算法、Bellman-Ford算法以及Floyd-Warshall算法等。原创 2024-07-08 20:24:17 · 1000 阅读 · 0 评论 -
数据结构:并查集
并查集,顾名思义,是一种支持合并(set union)和查找(find set)操作的数据结构。它主要用于解决动态连通性问题,即在一系列元素间建立连接关系,并能快速判断任意两个元素是否属于同一集合。并查集的核心特性在于其高效的查找和合并操作,这使得它成为图论和网络流问题中的得力助手。原创 2024-07-08 18:16:22 · 499 阅读 · 0 评论 -
有序数组的平方:C++中的数学与逻辑交响
有序数组的平方,指的是对一个已经排序的数组中的每一个元素求平方,得到一个新的数组。这个看似简单的操作,实际上涉及到数组的遍历、数学运算以及排序算法的理解。原创 2024-07-08 13:11:10 · 613 阅读 · 0 评论 -
移除元素:C++中的数据瘦身之旅
移除元素,指的是从数组中删除特定的元素或满足某种条件的元素。在C++中,我们可以利用标准库提供的函数,或是自己编写算法来实现这一功能。原创 2024-07-08 10:26:19 · 1036 阅读 · 0 评论 -
长度最小的子数组:一场数字丛林的探险
长度最小的子数组”通常指的是在满足某一条件(比如总和大于等于某个值)的所有子数组中,长度最短的那个。这是一个典型的窗口滑动问题,广泛应用于信号处理、数据分析等多个领域。原创 2024-07-08 08:09:36 · 928 阅读 · 0 评论 -
螺旋矩阵:C++中的旋转迷宫探险
螺旋矩阵,顾名思义,是指按照螺旋式顺序填充的二维数组。从外圈开始,顺时针或逆时针逐层向中心推进,直到填满整个矩阵。这一结构在数据可视化、图像处理等领域有着广泛的应用。原创 2024-07-08 05:19:10 · 1211 阅读 · 0 评论 -
设计链表:编织C++中的数据之网
链表,是一种线性数据结构,其中的元素通过指针相互链接。与数组相比,链表在插入和删除元素时更加灵活,无需移动大量元素,只需改变几个指针即可。这一特性使其在需要频繁增删操作的场景下大放异彩。原创 2024-07-08 02:16:09 · 933 阅读 · 0 评论 -
反转链表:C++中的时间倒流魔术
反转链表,顾名思义,就是将链表中的节点顺序完全颠倒,首尾易位,仿佛时间在这一刻倒流。这一操作在链表类问题中极为常见,是评估程序员基础算法能力的经典测试。原创 2024-07-07 23:26:17 · 1010 阅读 · 0 评论 -
两两交换链表中的节点:C++中的舞蹈编排艺术
两两交换链表中的节点,意味着我们需要将链表中相邻的两个节点互换位置,但整体的链表结构保持不变。这听起来像是一个简单的任务,但实现起来却需要细致入微的逻辑思考。原创 2024-07-07 21:25:59 · 581 阅读 · 0 评论 -
删除链表的倒数第 N 个结点:一场C++中的时间旅行
链表是一种常见的线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。删除链表的倒数第N个结点,意味着我们需要找到从链表尾部开始的第N个节点,并将其从链表中移除。原创 2024-07-07 19:19:36 · 766 阅读 · 0 评论 -
环形链表:C++中永不落幕的循环剧场
环形链表,顾名思义,是一种特殊的链表形式,其中最后一个节点的next指针不是指向null,而是回指到链表的第一个节点,形成一个闭环。这种结构看似简单,实则蕴含着巨大的潜力。原创 2024-07-07 17:27:25 · 965 阅读 · 0 评论 -
环形链表:C++中的无限循环之旅
环形链表是一种特殊的链表结构,其中最后一个节点的next指针指向头节点,形成一个闭环。这种结构使得遍历链表无需额外条件判断即可无缝返回起始位置,尤其适用于需要循环访问元素的场景。原创 2024-07-07 14:37:32 · 595 阅读 · 0 评论 -
有效的字母异位词:哈希表在C++中的魔法
哈希表,顾名思义,是一种使用哈希函数将键映射到值的数据结构。它允许我们在平均情况下以O(1)的时间复杂度进行查找、插入和删除操作,这是许多其他数据结构难以匹敌的。在C++中,是实现哈希表的常用容器。原创 2024-07-07 12:04:49 · 584 阅读 · 0 评论 -
算法:求每个节点的深度
在数据结构的语境下,树是一种分层的集合,由一系列节点组成,每个节点可以有零个或多个子节点。树的根节点位于最顶层,而没有子节点的被称为叶子节点。节点的深度,指的是该节点距离根节点的边的数量。求解每个节点的深度,实质上是在遍历树结构的同时,统计每个节点到根节点的路径长度。原创 2024-07-07 09:00:42 · 1079 阅读 · 0 评论 -
算法-数组:探寻下一个更大元素的奥秘
下一个更大元素”问题要求我们在一个数组中,对于每一个元素,找到它右侧的第一个比它大的元素。如果不存在这样的元素,则标记为-1。这个问题在股票价格分析、天气预测等领域有广泛应用,能帮助我们快速识别趋势变化。原创 2024-07-07 06:10:24 · 616 阅读 · 0 评论 -
算法链表:两数相加的艺术
链表是一种线性数据结构,其中的元素通过指针相互连接。在链表中进行两数相加,意味着我们需要遍历两个链表,将对应位置的数字相加,并处理进位。这看似简单的操作背后,却蕴含着对数据结构和算法设计的深刻理解。原创 2024-07-07 03:20:07 · 667 阅读 · 0 评论 -
算法-链表:两数相加的艺术
链表两数相加,指的是给定两个非空链表,每个节点代表一个数字的一位,数字的高位在链表的前端,低位在后端,求这两个数相加的结果并以同样的形式返回。这一问题不仅考验了我们对链表操作的熟练程度,也检验了我们处理进位运算的能力。原创 2024-07-07 00:29:11 · 894 阅读 · 0 评论 -
算法-链表:反转链表的艺术
反转链表,顾名思义,就是将链表中的节点按照相反的顺序重新链接,使得链表的头部变成尾部,尾部变成头部。这一操作在数据结构的调整、算法优化等领域有着广泛的应用,尤其在需要改变数据访问顺序或进行数据预处理的场景中,更是不可或缺。原创 2024-07-06 21:57:29 · 794 阅读 · 0 评论 -
算法-链表:合并两个有序链表的艺术
合并两个有序链表,顾名思义,就是将两个已排序的链表整合成一个新的链表,使得合并后的链表依然保持有序状态。这一操作在数据处理、排序算法等领域有着广泛的应用,特别是在需要对大量数据进行高效排序和整合的场景中,更是不可或缺。原创 2024-07-06 19:08:33 · 703 阅读 · 0 评论 -
算法-链表:探索相交链表的奥秘
相交链表是指两个或多个链表共享一部分节点的现象。在C++中,链表由一系列节点构成,每个节点包含数据和指向下一个节点的指针。当两个链表的某部分节点重叠时,便形成了相交链表。这一特性在数据结构的分析和设计中显得尤为重要,尤其是在处理复杂的数据关系和优化数据查询效率方面。原创 2024-07-06 16:45:56 · 632 阅读 · 0 评论 -
算法-数组:模拟行走机器人的奇妙旅程
数组,作为最基本的数据结构之一,可以看作是一系列相同类型数据的集合,每个数据都有一个唯一的位置索引。在模拟行走机器人时,我们可以将机器人的运动轨迹视为一个二维坐标系上的点集,通过数组来存储和处理这些点,从而实现对机器人运动状态的追踪和控制。原创 2024-07-06 13:33:45 · 768 阅读 · 0 评论 -
算法-算法思想:二分查找的魅力与智慧
二分查找,一种在有序数组中查找特定元素的高效算法,其核心思想是通过不断将搜索区间减半,逐步缩小目标范围,直至找到目标元素或确定目标不存在。与线性查找相比,二分查找的时间复杂度仅为O(log n),极大地提升了查找效率。原创 2024-07-06 11:30:21 · 843 阅读 · 0 评论