- 博客(5)
- 收藏
- 关注
原创 c++并查集的思想
/ 或者 parent[rootX] = rootY,根据需求选取。// 或者 parent[rootX] = rootY。1. **初始化**:对于每个元素,初始化一个父节点指针数组 `parent`,用来记录每个元素的根节点。将 y所在集合的根节点指向 x所在集合的根节点,或者反之,即可完成合并操作。初始时,每个元素的父节点指向自己,即 `parent[i] = i`。
2024-06-23 17:40:54
273
原创 c++单调栈的简单思路
单调栈是一种利用栈的数据结构特性解决特定类型问题的高效算法技巧,尤其是在处理数组或序列中的“最近”问题时非常有用,如“下一个更大元素”、“上升子序列长度”等。否则,从栈顶开始弹出元素,直到栈为空或栈顶元素大于当前元素,然后将当前元素的下标入栈。- 遇到一个元素时,如果栈顶元素满足条件(比如对于“下一个更大元素”,栈顶元素小于当前元素),则弹出栈顶元素,并记录当前元素为其对应的结果。单调栈的精髓在于利用栈的后进先出特性,快速定位并处理与当前元素相关的“历史”信息,从而达到较高的效率。1. 单调递增栈的应用。
2024-06-23 17:37:45
229
原创 c++中的双指针
在C++中,双指针通常指的是两个指针分别从数组或者序列的两端向中间移动,或者在链表中一前一后同时移动的技巧。这些例子展示了双指针技巧在不同问题中的应用,通过同时移动两个指针,可以在较低的时间复杂度内解决一些常见的算法问题。问题描述:给定一个已排序的整数数组 nums,找出数组中两个数使它们的和等于目标值 target。1.使用两个指针,一个指向数组的起始位置(left),另一个指向数组的末尾(right)。7.使用两个指针,一个慢指针 slow,每次移动一步,一个快指针 fast,每次移动两步。
2024-06-23 17:31:41
561
原创 哈希表的基本思路
在哈希表索引 index`对应位置的向量中查找键为 key的键值对,如果找到则返回对应的值,否则返回一个特定的值(例如 -1)表示未找到。这里使用了简单的取余法,将键 `key` 映射到 `[0, TABLE_SIZE-1]` 范围内的整数。// 哈希表大小,选取一个适当的素数。这里使用了一个大小为MAX的数组 table,每个元素是一个存放键值对的向量。1. 定义哈希表:首先确定哈希表的大小,一般选择一个合适的素数作为表的大小。2. 哈希函数:选择一个好的哈希函数,将键映射到哈希表的索引位置。
2024-06-23 17:19:20
743
原创 二分查找的简单思路
中间元素可以通过 (left + right) / 2 计算,其中 left 是左边界,right 是右边界。7.迭代或递归: 根据比较结果更新搜索范围,重复执行步骤2和步骤3,直到找到目标值或确定目标值不存在(即左边界大于右边界)为止。5.如果目标值小于中间元素,则目标值在数组左半部分,更新右边界为 mid - 1。6.如果目标值大于中间元素,则目标值在数组右半部分,更新左边界为 mid + 1。// 找到目标值,返回索引。4.如果目标值等于中间元素,则找到目标,返回中间元素的索引。return -1;
2024-06-23 17:16:22
608
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人