151. 反转字符串中的单词 题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/ 题目难度:中等 文章讲解:https://programmercarl.com/0151.翻转字符串里的单词.html 视频讲解: https:// ...
344. 反转字符串 题目链接:https://leetcode.cn/problems/reverse-string/ 题目难度:简单 文章讲解:https://programmercarl.com/0344.反转字符串.html 视频讲解: https://www.bilibili.com/vi ...
定义 二叉搜索树是一种特殊的二叉树,其定义如下: 空树是二叉搜索树。 若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。 若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。 二叉搜索树的左右子树均为二叉搜索树。 操作 CRUD 二叉搜索树的基本操作 ...
数据结构——并查集 学习笔记 并查集是一种用于管理元素所属集合的数据结构,实现为一个森林。 并查集中,每棵树表示一个集合,树中的节点表示对应集合中的元素。 其思想是,把集合属性绑定到根节点上,避免多余的处理,因此一般难以分离。 普通并查集 并查集支持两种操作: 合并(Union):合并两个元素所属集 ...
二分查找的循环条件及指针终止位置问题 常见的二分搜索法的循环迭代方法分为:左闭右开 和 左闭右闭 两种方式 左闭右开:由于右边界开放,例如[1,1)是矛盾的,因此循环条件为while(l<r)。闭合指后续迭代仍需要进行对其元素进行比较。因此每次迭代结束,左指针l移动到中点的下一位l = mid+1, ...
454. 四数相加 II 题目链接:https://leetcode.cn/problems/4sum-ii/ 题目难度:中等 文章讲解:https://programmercarl.com/0454.四数相加II.html 视频讲解: https://www.bilibili.com/video/ ...
比赛链接 A T469715 [2024迎新马拉松] 101 相当于选择一段长度为 \(3k\) 的区间使得变化的总值最小。维护每一个元素变化到 \(1\) 与 \(0\) 的要求数量,之后前缀和处理即可。 #include <bits/stdc++.h> #define endl "\n" usi ...
242. 有效的字母异位词 题目链接:https://leetcode.cn/problems/valid-anagram/ 题目难度:简单 文章讲解:https://programmercarl.com/0242.有效的字母异位词.html 视频讲解: https://www.bilibili.c ...
讲真牛客这次的直播录屏讲得挺烂的(暴论),板书烂,表达烂... 求 \(1\sim x\) 的异或和 当然,求异或和本质上是求每一位的二进制值。 前置知识: 和十进制一样,二进制下最左边是高位,最右边是低位; 异或和计算中,偶数个 \(1\) 结果为,反之为 1。 循环周期推导 接下来推导为什么异或 ...
704. 二分查找 题目链接:https://leetcode.cn/problems/binary-search/ 题目难度:简单 文章讲解:https://programmercarl.com/0704.二分查找.html 视频讲解: https://www.bilibili.com/video ...
A - Insert (abc361 A) 题目大意 给定一个数组\(a\)和数 \(k,x\),将 \(x\)插入第 \(k\)个数之后,并输出新数组。 解题思路 用\(vector\)的直接 \(insert\)即可。 神奇的代码 #include <bits/stdc++.h> using n ...
LRU(Least Recently Used,最近最少使用)算法是一种常用于缓存管理的算法,用于在缓存空间有限的情况下,决定哪些数据应该被移除。它的基本思想是:如果一个数据最近被访问过,那么在将来一段时间内它被再次访问的概率较高。因此,当缓存已满,需要移除数据时,优先移除那些最近最少被使用的数据。 ...
24.两两交换链表中的节点 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/ 题目难度:中等 文章讲解:https://programmercarl.com/0024.两两交换链表中的节点.html 视频讲解: https://www.bi ...
理论 我们需要一个数据结构维护树上的问题,仿照序列上的问题,我们需要一个方法快速的刻画出信息。 比如说线段树就通过分治的方式来通过将一个区间划分成 \(\log n\) 个区间并刻画出这 \(\log n\) 个区间的信息。 然后我们考虑把这个东西放到树上类比。你发现线段树上每个非叶节点都有两个儿子 ...
203.移除链表元素 题目链接:https://leetcode.cn/problems/remove-linked-list-elements/ 题目难度:简单 文章讲解:https://programmercarl.com/0203.移除链表元素.html 视频讲解: https://www.b ...
977.有序数组的平方 题目建议: 本题关键在于理解双指针思想 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 题目难度:简单 文章讲解:https://programmercarl.com/0977.有序数组的平方.html ...
随机数对程序设计来说很重要,今天就从几方面探讨下一些常见的随机数相关的问题。 本文只讨论整数相关的随机数,另外需要你对概率论有最基本的了解(至少知道古典概型是什么)。 本文索引 如何从rand7生成rand5 go标准库的做法 从rand5生成rand7 充分利用每一个bit 带有权重的随机数 随机 ...
A - A Healthy Breakfast (abc360 A) 题目大意 给定一个字符串包含RMS,问R是否在S的左边。 解题思路 比较R和S的下标,谁小即谁在左边。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = ...
顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解 特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.com.cn/ ...
完全背包模型与 0-1 背包类似,与 0-1 背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次。 而状态转移方程于01背包区别在于可以直接从[i][j-w[i]]转移 理由是当我们这样转移时,[i][j-w[i]]已经由 [i][j-2*w[i]]更新过,那么 [i][j-w[i]]就是充分 ...