自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 2025.8.26刷题-回溯法-N皇后

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的的解决方案。每一种解法包含一个不同的的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。n = 4如上图所示,4 皇后问题存在两个不同的解法。

2025-08-26 16:28:04 278

原创 2025.8.25回溯算法-集合

给你一个整数数组nums,数组中的元素。返回该数组所有可能的子集(幂集)。解集包含重复的子集。你可以按返回解集。

2025-08-25 20:01:39 820

原创 2025.8.21卡码刷题-回溯算法-分割

给你一个字符串s,请你将s分割成一些 子串,使每个子串都是。返回s所有可能的分割方案。

2025-08-25 16:43:34 359

原创 2025.7.19卡码刷题-回溯算法-组合

ind指向的是列表的子集,如[1,2,3,4,5],ind=2,表示的列表是[3,4,5],同时又因为子集可以用原列表表示,所以直接i = ind,之后再由i + 1进行递归。之前在进行回溯的时候,使用的都是for循环中的i为ind,但是for循环中的i所表示的与回溯法中ind所表示的其实不一样。for中i是指向横轴的值,我理解的是通过ind得到的列表中的值。需要进行去重,去重的目的是在同意层中不会选到连个值一样的元素,不同时对于不同层的不同位置当值一样的元素,则是可以使用的。注意 2 可以使用多次。

2025-08-21 22:33:56 821

原创 2025.7.18卡码刷题-二叉树5

给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。[1,null,2]

2025-07-18 16:51:44 1929

原创 2025.7.15卡码刷题-二叉树4

给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11。

2025-07-15 17:46:44 711

原创 2025.7.14卡码刷题-二叉树3

给定一个不重复的整数数组nums。可以用下面的算法从numsnums返回 nums构建的最大二叉树。递归调用如下所示:- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- 空数组,无子节点。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- 空数组,无子节点。- 只有一个元素,所以子节点是一个值为 1 的节点。

2025-07-14 11:22:29 618

原创 2025.7.12卡码刷题-二叉树2

递归的终止条件依旧是节点为空,这里可能会要想既然是叶子,那么只要节点的左子节点和右子节点为空就可以终止了,没有必要到节点为空这一步。因为每一次遍历到头之后,会自动回退到上一个节点然后继续往下(使用递归的方法),但是因为要记录路径,所以每一次退回都需要手动把退回的节点从路径中删除。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。终止条件:左右节点是否都空,左右只空一个,左右都不空但不相等,左右都不空但相等。

2025-07-12 19:33:22 1030

原创 2025.7.11卡码刷题-二叉树

因此在使用栈的时候,需要将left先全部传入,当left为null的时候,在将栈内的弹出,再考虑右边。可以将前序遍历中的代码中传入栈的顺序有右左变为左右,这样得到的结果为中右左,左后将vector反转即可。递归的单次逻辑:判断节点是否为空,判断存放结果的vector是否需要再加一层,将节点的值存入对应的vector层中,递归左右节点。通过栈,将节点一个个放入栈中,通过中左右的顺序弹出,因为要先弹出左,所以在放入时需要先右后左。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2025-07-12 13:55:56 957

原创 2025.7.4卡码刷题栈与队列

int age;// 自定义比较:按年龄升序(最小堆)注意:大顶堆优先弹出最小的。

2025-07-08 00:24:16 2018

原创 2025.7.2卡码刷题字符串

erase()方法可以是erase(size_t a, size_t l),删除a位置的l个内容,也可以是erase(s.begin()+i)用迭代器,s.begin()表示字符串开始的位置,i表示向后几个。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。,注意处理开始的空格和结束的空格。

2025-07-04 01:55:42 777

原创 2025.7.1卡码刷题哈希表

第二,这里再通过大小判断是否移动双指针时,一定要移动一次判断一次,即这里面的三个条件(大于零小于零等于零)一定要用lf else,不能直接用三个if,否则会出现移动指针导致right<=Left的情况出现。第一,在双指针的循环中,只能够判断出现了满足要求的数之后在进行去重的判断,否则如果一开始就都满足每一个值都为零的话,则会全部跳过。第三,我还没有理解,为什么使用的左右指针去重方式有问题,即使报错了,我修改了之后的我也理解。第二,我上一题中的剪枝方式就有问题,不应该只判断第一个。,请你计算有多少个元组。

2025-07-02 23:40:56 1043

原创 2025.6.30卡码刷题哈希表

向哈希表中插值要用insert()方法,不能用数组的push_back(),注意虽然这里的返回值是vector,但是直接用哈希表搜索后放入vector中,会出现重复,因此这里需要先用unordered_set来放元素,再转为vector。这里也是在集合中找元素,同样也不用返回下标,但是这里的集合大小未定,因此不能直接使用数组来表示哈希表,需要有unordered_set来表示。这里我一开始在函数的内层循环中使用了while(n%10)的判断条件,忽略了n为10的整数倍的情况,应该是直接为while(n)。

2025-07-02 17:31:30 599

原创 2025.6.25刷题

你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。使用双指针,主要因为题目要求不用管之后的内容,个人感觉使用双指针条件比较苛刻。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]元素的顺序可能发生改变。

2025-06-29 01:35:01 660

原创 2025.6.28卡码刷题-链表

他们都是指向ListNode的结构体,因此当出现cur=Dhead时,表明他们指向的都是同一个结构体,那么Dhead和cur一样,修改cur,Dhead也会改变。链表不想普通的数值,不仅仅是值相等没并且指向的下一个也相等,因此一旦可以有一个是相等的,后面也全是等的,所以只要尾部对齐然后遍历比较即可。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。

2025-06-29 01:27:31 1717

原创 2025.6.27卡码刷题链表

/ 单链表int val;//节点的值//指向下一个节点的指针ListNode(int x) : val(x), next(null) {} //链表的构造函数注意结构体中的构造函数,如果没有则需要自行初始化。

2025-06-28 22:56:34 933

原创 2025.6.26卡码代码刷题

我一开始也是这样理解的,但是因为条件是大于等于,如果这里出现刚刚好出行等于目标值,那么就符合我的想法">"就多一个,但是这里也会有大于的情况,因此只能先提取长度,再更新长度。2,使用auto it = cnt.find(a),返回的it是指向建a的迭代器,类型是std::pair<const int, int>,前一个是键不可改变,后一个是值可以改变。随后的输入为需要计算总和的区间,直至文件结束。这里我犯了两个错误,一个是忘记获取的应该是最短的长度,在开始的时候直接得到的是最后的符合条件的字串。

2025-06-27 01:12:27 845 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除