- 博客(61)
- 收藏
- 关注
原创 C++学习记录-旧题新做-移除重复节点
原题记录链接:https://blog.youkuaiyun.com/chamao_/article/details/143489223?fromshare=blogdetail&sharetype=blogdetail&sharerId=143489223&sharerefer=PC&sharesource=chamao_&sharefrom=from_linkC++解法:今日C++知识点:C++与C在链表中的区别在于C++拥有构造函数。什么是构造函数?关键词只有三个:对象被创建时自动调用初始化在leetco
2025-12-23 10:04:04
285
原创 C++学习记录-旧题新做-旋转矩阵
在C++中,可以用matrix.size()来获取行数,matrix[0].size()来获取列数。但需要注意,如果matrix.size() == 0,不要访问matrix[0],否则会越界。
2025-12-16 14:36:37
200
原创 C++学习记录-旧题新做-字符串轮转
C++知识:虽然C++可以使用C的strstr(),但是不推荐。C++中可以使用.find(),来查找字符串1中是否包含字符串2。⭐⭐⭐最常见写法。
2025-12-15 10:24:03
264
原创 C++学习记录-旧题新做-字符串压缩
必须让你自己保证 buffer 足够大。会自动管理内存,完全不会溢出。:改变字符串的“长度”,并用。在我的压缩字符串构造过程中,我。用来把“数字类型”转换为。当做数字 65 转换成。:只是提前分配“容量”,✔ 不需要格式化字符串。✔ 无需关心缓冲区大小。
2025-12-12 17:49:04
255
原创 C++学习记录-旧题新做-回文排列
原题解题记录:https://blog.youkuaiyun.com/chamao_/article/details/143233406?fromshare=blogdetail&sharetype=blogdetail&sharerId=143233406&sharerefer=PC&sharesource=chamao_&sharefrom=from_linkC++解法(自己写的):下面是AI辅助修改为更C++风格的代码: 在C++中,用std::vector<int> arr(n, 0);可以等价于
2025-12-12 11:45:24
377
原创 C++学习记录-旧题新做-判断字符是否唯一
本文开始新系列——旧题新做。将曾经我练过的力扣题改写成C++解法。因为本作者曾经只熟悉C语言,目前想锻炼一下C++的语法,故开设此系列,也借此激励自己坚持练习。3. .length() or .size()都可以获取字符串的长度,此长度不包含/0。和C的strlen()一样。1. C中的char*代表字符串,C++中用std::string就可以了。2. 在特殊情况用size_t来代替int,更符合C++规范。它是 C++ 中用于“大小、长度、索引”的标准类型。所以现代 C++ 项目一般不推荐这个写法。
2025-12-11 17:54:49
274
原创 【Ubuntu】入门Linux,看这一篇就够了!
Ubuntu 是一个基于 Debian 的 Linux 发行版,由英国公司 Canonical Ltd. 于 2004 年首次发布。其设计目标是为普通用户提供一个易用、现代、开源的操作系统。Ubuntu 默认使用 GNOME 桌面环境(从 17.10 版本起),支持图形界面和命令行操作,适用于个人电脑、开发环境、服务器、容器及云计算平台。Ubuntu 的名称来自南非的一种哲学“Ubuntu”,意为“我因我们而存在”。默认集成大量常用软件(浏览器、终端、编辑器、办公软件等)
2025-11-04 17:34:55
1044
原创 力扣leetcode 21. 合并两个有序链表 递归 C语言解法
为空时,直接返回另一个链表的头节点。这样如果其中一个链表为空,函数会立即返回另一个链表。:每次递归调用返回较小节点,并继续连接剩余部分,最终构建完整的合并链表。新链表是通过拼接给定的两个链表的所有节点组成的。当前节点的值,选择较小的节点作为当前合并链表的头部,并让它的。将两个升序链表合并为一个新的。指针指向合并后的子链表。
2025-02-24 16:14:58
398
原创 力扣leetcode 1.两数之和 C语言解法 哈希表
因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。你可以想出一个时间复杂度小于。你可以按任意顺序返回答案。,请你在该数组中找出。时间复杂度:O(n)
2025-02-17 16:14:05
365
原创 力扣面试题 08.11. 硬币 动态规划 完全背包 C语言解法
给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)
2025-01-17 15:48:59
369
原创 力扣leetcode 416.分割等和子集 动态规划 0-1背包
请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。本题我参照代码随想录的五部曲步骤,练习0-1背包代码。数组可以分割成 [1, 5, 5] 和 [11]。物品即为元素,物品的重量和价值均为它的值。数组不能分割成两个元素和相等的子集。首先需要得出数组所有元素的和。背包容量即为元素和的一半。
2025-01-13 16:27:48
600
原创 力扣面试题 08.10. 颜色填充 C语言解法 深度优先 数组 矩阵
周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。注意,右下角的像素没有更改为 2 ,因为它不属于初始坐标点的周围区域。初始坐标点位于图像的正中间,坐标 (sr,sc)=(1,1)。初始坐标点周围区域上所有符合条件的像素点的颜色都被更改成 2。编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。表示,元素为初始颜色值。初始坐标点的行坐标为。时间、空间复杂度均为O(N^2)。待填充的图像用二维数组。
2025-01-10 11:15:29
507
原创 力扣面试题 08.09. 括号 C语言解法 回溯递归动态规划字符串
设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。这样的len--是多此一举的。会自动恢复到调用之前的值,无需手动。说明:解集不能包含重复的子集。是局部变量,因此递归返回后,,因此每次递归调用返回后,你之所以在递归后使用。会恢复到递归前的值,
2025-01-09 14:49:18
890
原创 力扣面试题 08.08. 有重复字符串的排列组合 回溯剪枝递归 C语言
是 C 标准库提供的一个字符串比较函数,用来比较两个字符串。:待排序数组的指针,通常是数组的起始地址。对于字符串来说,它就是字符串的首地址。是 C 语言标准库提供的一个函数,它用于对数组进行排序。编写一种方法,计算某字符串的所有排列组合。:一个比较函数,它定义了两个元素之间的比较规则。:字符串的长度,表示有多少个字符需要排序。会调用这个比较函数来决定排序的顺序。是字符串的长度,即数组元素的个数。:数组中元素的个数。会将字符串中的字符进行排序。:这是比较函数的传递方式。来比较字符串中的字符。
2025-01-08 11:17:18
892
原创 力扣面试题 - 08.07.无重复字符串的排列组合 C语言解法 回溯递归dfs深度优先
无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。)画的图,可以参考一下。
2025-01-07 14:23:51
731
原创 力扣面试题 44 - 汉诺塔问题 C语言解法
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;
2025-01-03 14:20:23
496
原创 力扣面试题 43 - 递归乘法 C语言解法
写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。是一个类型表达式,用于描述一个二维数组的类型,而不需要具体的数组名字。这样的写法是合法的,下面分享评论区的一个很巧妙的代码(作者:0x7FFFFFFF)占用 1 字节,二维数组的总大小就是。能正确计算出这个类型所需的内存大小。
2025-01-02 11:12:33
563
原创 力扣面试题 41 - 魔术索引 C语言解法 二分查找
给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。中,有所谓的魔术索引,满足条件。: 0下标的元素为0。
2024-12-30 11:19:14
498
原创 力扣面试题 - 40 迷路的机器人 C语言解法
设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。返回一条可行的路径,路径由经过的网格的行号和列号组成。左上角为 0 行 0 列。如果没有可行的路径,返回空数组。0行0列(左上角) -> 0行1列 -> 0行2列 -> 1行2列 -> 2行2列(右下角)输入中标粗的位置即为输出表示的路径,即。以下C代码有参考题解区大佬:taopi。网格中的障碍物和空位置分别用。
2024-12-27 16:44:33
716
原创 力扣面试题 39 - 三步问题 C语言解法
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
2024-12-26 11:05:14
1690
原创 什么是动态规划?内含代码示例
动态规划(Dynamic Programming, DP) 是一种在解决优化问题时非常常用的算法设计思想。它通过 分解问题 和 利用重叠子问题 的特点,将问题的解划分为子问题的解,并通过保存中间结果(记忆化或表格法)避免重复计算,从而显著提高效率。
2024-12-26 10:35:57
809
原创 力扣面试题 38 - 求和路径
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]给定如下二叉树,以及目标和。
2024-12-25 10:11:49
363
原创 力扣面试题 36 - 检查子树
如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。此题相对书上原题略有改动。
2024-12-20 10:44:05
578
原创 力扣面试题 35 - 首个共同祖先
设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。节点 5 和节点 1 的最近公共祖先是节点 3。p、q 为不同节点且均存在于给定的二叉树中。所有节点的值都是唯一的。
2024-12-19 11:14:20
510
原创 力扣面试题 34 - 后继者
设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回。
2024-12-18 10:26:51
421
原创 力扣面试题 33 - 合法二叉搜索树
根节点的值为 5 ,但是其右子节点值为 4。输入为: [5,1,4,null,null,3,6]。实现一个函数,检查一棵二叉树是否为二叉搜索树。时间复杂度、空间复杂度均为O(N)。
2024-12-17 10:32:56
491
原创 力扣面试题 32 - 检查平衡性 C语言解法
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。
2024-12-06 16:13:24
750
原创 力扣面试题 31 - 特定深度节点链表 C语言解法
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为。返回一个包含所有深度的链表的数组。代码如下:(不得不说,C语言真的是麻烦死了)不懂的可以在评论区问我噢~
2024-12-05 11:35:29
719
原创 力扣面试题 30 - 最小高度树
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。给定有序数组: [-10,-3,0,5,9],
2024-12-04 17:24:12
420
原创 力扣面试题 29 - 绘制直线
在第 0 行的第 30 位到第 31 位画一条直线,屏幕二进制形式表示为 [00000000000000000000000000000011],因此返回 [3]的 int 类型代表 -1,因此返回 [-1,-1,-1]已知一个由像素点组成的单色屏幕,每行均有。个像素点,所有像素点初始为。个像素点」为一组存放在一个。我们将在屏幕上绘制一条从点。现将每行的像素点按照「每。的直线(即像素点修改为。),请返回绘制过后的数组。中,再依次存入长度为。
2024-12-04 10:19:09
469
原创 力扣面试题 28 - 配对交换
编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。C代码:(有史以来行数最少的题哈哈):num = 2(或者0b10)1 (或者 0b01)
2024-12-02 11:23:04
567
原创 力扣面试题 27 - 整数转换
A = 29 (或者0b11101), B = 15(或者0b01111)编写一个函数,确定需要改变几个位才能将整数A转成整数B。此题比较简单,没啥好说的~
2024-11-28 11:19:13
444
原创 力扣面试题 26 - 翻转数位
每次遇到一个 0 时,考虑将其变为 1,并将其两边的连续 1 段合并。如果连续 1 的段之间有一个 0 的间隔,合并后的长度为两段长度之和加 1。如果输入是负数(有符号整数的情况),需要特别注意其二进制补码表示。否则,如果输入本身已经是全 1 的情况,也需要特殊处理(无需修改即可输出结果)。请编写一个程序,找出你能够获得的最长的一串1的长度。中哪些部分连续包含 1,可以通过逐位扫描来实现。记录每一段连续的 1 的长度。遍历整个二进制位的过程中,维护一个变量用于记录最大连续 1 的长度,实时更新。
2024-11-26 11:01:32
429
原创 力扣面试题 - 25 二进制数转字符串
给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。:0.1无法被二进制准确表示。
2024-11-22 10:57:36
398
原创 力扣面试题 - 24 插入
具体插入过程如图所示。,且从 0 位开始计算)。区域至少可容纳 5 位。对应的二进制数字插入。对应的二进制数字的第。构造一个掩码,掩码的第。,以及表示比特位置的。位为0,其他位为1。
2024-11-21 17:15:04
730
原创 力扣面试题 23 - 动物收容所
动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。
2024-11-20 11:24:05
2095
原创 力扣面试题 22 - 栈排序
题目:栈排序。编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。pushpoppeek和isEmpty。当栈为空时,peek返回 -1。
2024-11-18 15:11:00
531
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅