![](https://img-blog.csdnimg.cn/direct/106de6cc6603462fa3358efe32bb2aff.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
about C & C++
colorful_stars
以创业的激情做好一件事,成就一番事!
展开
-
155. 最小栈
-> 返回 -3.minStack.getMin();--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。原创 2024-07-28 19:44:05 · 153 阅读 · 0 评论 -
41. 缺失的第一个正数
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。解释:范围 [1,2] 中的数字都在数组中。解释:1 在数组中,但 2 没有。解释:最小的正数 1 没有出现。原创 2024-07-28 18:29:15 · 201 阅读 · 0 评论 -
25. K 个一组翻转链表
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。原创 2024-07-27 16:19:24 · 374 阅读 · 0 评论 -
76. 最小覆盖子串
解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、‘B’ 和 ‘C’。对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。解释: t 中两个字符 ‘a’ 均应包含在 s 的子串中,如果 s 中存在这样的子串,我们保证它是唯一的答案。因此没有符合条件的子字符串,返回空字符串。解释:整个字符串 s 是最小覆盖子串。原创 2024-07-18 18:40:52 · 209 阅读 · 0 评论 -
53. 最大子数组和
解释:连续子数组 [4,-1,2,1] 的和最大,为 6。dp[i]表示:以nums[i]元素结尾的最大子数组的和;子数组是数组中的一个连续部分。原创 2024-07-19 15:08:54 · 176 阅读 · 0 评论 -
239. 滑动窗口最大值
滑动窗口的位置 最大值。原创 2024-07-18 17:34:16 · 206 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词
起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。起始索引等于 2 的子串是 “ab”, 它是 “ab” 的异位词。原创 2024-07-12 20:25:54 · 284 阅读 · 0 评论 -
11. 盛最多水的容器
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2024-07-11 17:52:52 · 202 阅读 · 0 评论 -
42. 接雨水
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。2、其次,可以使用maxArr数组减去柱子数组对应的值,并累加,即可得到最终雨水数量。1、首先,将黑方块与雨水作为整体来看,那么得到一个数组,即为maxArr;3、最后,我们将问题简化为:求maxArr数组。原创 2024-07-11 17:22:08 · 349 阅读 · 0 评论 -
128. 最长连续序列
解释:最长数字连续序列是 [1, 2, 3, 4]。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。原创 2024-07-10 18:43:29 · 165 阅读 · 0 评论 -
468. 验证IP地址
有效的IPv4地址 是 “x1.x2.x3.x4” 形式的IP地址。其中 0 <= xi <= 255 且 xi 不能包含 前导零。xi 是一个 十六进制字符串 ,可以包含数字、小写英文字母( ‘a’ 到 ‘f’ )和大写英文字母( ‘A’ 到 ‘F’ )。解释:既不是 IPv4 地址,又不是 IPv6 地址。解释:有效的 IPv4 地址,返回 “IPv4”解释:有效的 IPv6 地址,返回 “IPv6”在 xi 中允许前导零。原创 2024-07-09 21:08:04 · 366 阅读 · 0 评论 -
LCR 103. 零钱兑换
注意:amount-coins[i]可能会得到小于0的数,但是数组下标从0开始(没有小于0的零钱),因此如果遇到该种情况,即:该种情况不能组成amount,因此通过min函数过滤掉。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。原创 2024-07-08 17:23:59 · 232 阅读 · 0 评论 -
LCR 156. 序列化与反序列化二叉树
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。原创 2024-07-07 13:54:14 · 395 阅读 · 0 评论 -
171. Excel 表列序号
首先,字符’A’的ascii值为65,因此将对应字符转换为从0开始的对应数字需要:先将字符转换为数字,其次将对应数字-65+1,即数字-64。其次,按照顺序(进制为26),将前一个字符的值*26再累加当前字符的值;最后,累加结束即为字符序列的值;原创 2024-06-30 17:42:07 · 397 阅读 · 0 评论 -
240. 搜索二维矩阵 II
【代码】240. 搜索二维矩阵 II。原创 2024-06-30 16:37:27 · 174 阅读 · 0 评论 -
33. 搜索旋转排序数组
整数数组 nums 按升序排列,数组中的值 互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。将该数组整体分为两个有序数组;1、使用二分法找到两个数组的交界处(即:第一个有序数组的最后一个元素的下标),原创 2024-06-30 16:19:47 · 161 阅读 · 0 评论 -
LCR 074. 合并区间
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。原创 2024-06-29 22:57:34 · 301 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
二分的while循环的结束条件是l>=r,所以在循环结束时l有可能会大于r,此时就可能导致越界,因此,基本上二分问题优先取r都不会翻车。由于nums为有序数组,因此可以使用二分法,查找效率更高。原创 2024-06-29 22:26:55 · 281 阅读 · 0 评论 -
Bad owner or permissions on C:\\Users\\username/.ssh/config > 过程试图写入的管道不存在。
在windows下打开命令行,通过以下命令打开文件操作权限->重启。确保只有用户对该.ssh/config文件具有读取权限。SSH 配置文件应具有受限权限以防止未经授权的访问。使用windows连接远程服务器出现。原创 2024-06-27 22:41:44 · 376 阅读 · 0 评论 -
162. 寻找峰值
你可以假设 nums[-1] = nums[n] = -∞。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。解释:3 是峰值元素,你的函数应该返回其索引 2。解释:你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。原创 2024-06-25 21:55:48 · 296 阅读 · 0 评论 -
LCR 076. 数组中的第 K 个最大元素
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。原创 2024-06-25 21:10:30 · 282 阅读 · 0 评论 -
LCR 060. 前 K 个高频元素
进阶:所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。原创 2024-06-25 20:29:46 · 222 阅读 · 0 评论 -
172. 阶乘后的零
这是因为除了 5 的倍数,还有 25、125、625 等的倍数也会贡献额外的 5 的因子(例如,25 包含两个 5 的因子,125 包含三个 5 的因子,以此类推)。在计算阶乘中尾随零的数量时,我们关注的是5的因子的数量,而不是10的因子的数量。在阶乘的计算过程中,2的因子的数量通常比5的因子的数量多,因此我们只需要关注5的因子的数量。中 2 和 5 的因子对数时,我们总是会遇到足够的 2 的因子来与 5 的因子配对,从而产生末尾的零。中因子 10 的个数,而 10=2×5,因此转换成求 n!原创 2024-06-24 21:11:18 · 371 阅读 · 0 评论 -
75. 颜色分类
首先,指针负责指向数组中0序列的末尾;随后,指针负责指向数组中1序列的末尾。在第一遍遍历时,遇到0,则与数组中0序列末尾+1的元素交换。在第二遍遍历时,遇到1,则继续与指针指向位置+1的元素交换。0和1排序完毕,则剩下的均为2;我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。你能想出一个仅使用常数空间的一趟扫描算法吗?原创 2024-06-24 19:44:51 · 458 阅读 · 0 评论 -
79. 单词搜索
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。进阶:你可以使用搜索剪枝的技术来优化解决方案,使其在 board 更大的情况下可以更快解决问题?原创 2024-06-24 17:19:06 · 638 阅读 · 0 评论 -
202. 快乐数
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 n 是 快乐数 就返回 true;不是,则返回 false。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。原创 2024-06-23 18:14:38 · 133 阅读 · 0 评论 -
LCR 079. 子集
【代码】LCR 079. 子集。原创 2024-06-23 17:28:35 · 112 阅读 · 0 评论 -
107. 二叉树的层序遍历 II
DFS方法,先遍历每一层的第一个节点,直至最深层;然后再回退,以层次递减的方式(回溯)对每一层的的节点进行添加。方法2:在方法1框架上同样也可使用栈的方式实现。原创 2024-06-21 22:40:05 · 204 阅读 · 0 评论 -
LCR 175. 计算二叉树的深度
解释: 上面示例中的二叉树的最大深度是 4,沿着路径 1 -> 2 -> 3 -> 4 或 1 -> 2 -> 5 -> 4 到达叶节点的最长路径上有 4 个节点。原创 2024-06-21 21:48:32 · 169 阅读 · 0 评论 -
LCR 036. 逆波兰表达式求值
有效的算符包括 +、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6“,”/“,”解释:该算式转化为常见的中缀算术表达式为:= 17 + 5= 22。原创 2024-06-18 00:26:44 · 221 阅读 · 0 评论 -
LCR 083. 全排列
【代码】LCR 083. 全排列。原创 2024-06-17 23:57:51 · 172 阅读 · 0 评论 -
17. 电话号码的字母组合
遍历完成,继续回退,再遍历。原创 2024-06-17 23:12:19 · 348 阅读 · 0 评论 -
200. 岛屿数量
此外,你可以假设该网格的四条边均被水包围。原创 2024-06-15 20:46:58 · 613 阅读 · 0 评论 -
230. 二叉搜索树中第K小的元素
根据二叉搜索树的性质可知,其按照中序遍历序列可获得当前树的递增顺序序列。因此,通过递归中序遍历即可得到第K个元素的结果。进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?原创 2024-06-15 19:06:39 · 386 阅读 · 0 评论 -
116. 填充每个节点的下一个右侧节点指针
int val;Node *left;Node *next;原创 2024-06-10 10:56:24 · 431 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树
1、根据前序序列根节点在中序序列中的索引,划分左右子树的边界;2、根据前序序列根节点在中序序列中的索引,划分左右子树的边界;right:中序遍历子树的右边界节点索引。left:中序遍历子树的左边界节点索引。left > right ,此时越界;为:根节点在中序序列中的索引-左边界。即:当前根节点索引+左子树长度+1。2、经过递归,依次获得左右子树;root:前序遍历中根节点索引。3、对左右子树进行递归;原创 2024-06-09 10:55:21 · 295 阅读 · 0 评论 -
C++多态-联编
多态从实现的角度可以划分为两类:编译时的多态和运行时的多态。确定调用具体代码段的过程就是联编。联编就是指计算机程序自身彼此关联的过程:即把一个源程序经过编译、连接,使之成为可执行的程序文件的过程。根据联编进行的阶段的不同,可以将其划分为静态联编和动态联编。函数重载的意义在于它可以用同一个名字访问一组相关的函数,能使用户为某一类操作取一个通用的名字。一般的函数和成员函数,构造函数都可以重载。C++中通过两种工作方式实现编译的的多态性:函数重载和运算符重载。它们都属于静态联编。原创 2024-06-02 16:05:39 · 332 阅读 · 0 评论 -
Boost的日志库Log使用详解
【代码】Boost的日志库Log使用详解。原创 2024-05-08 00:20:51 · 398 阅读 · 0 评论 -
103. 二叉树的锯齿形层序遍历
【代码】103. 二叉树的锯齿形层序遍历。原创 2024-05-05 22:04:34 · 207 阅读 · 0 评论 -
102. 二叉树的层序遍历
if (!//自定义循环队列最大可存储节点个数为2000//当前层父节点数量int());//取出当前父节点,并将所有的父节点的孩子节点入队i++){return ans;原创 2024-05-05 20:54:09 · 431 阅读 · 0 评论