
代码随想录
根据https://programmercarl.com/记录的刷题笔记
sevune
这个作者很懒,什么都没留下…
展开
-
代码随想录第42天:动态规划part04
【代码】代码随想录第42天:动态规划part04。原创 2024-05-17 17:18:05 · 180 阅读 · 0 评论 -
代码随想录第41天: 动态规划part03
【代码】代码随想录第41天: 动态规划part03。原创 2024-05-14 15:30:06 · 192 阅读 · 0 评论 -
代码随想录第39天: 动态规划part02
【代码】代码随想录第39天: 动态规划part02。原创 2024-05-13 21:31:52 · 202 阅读 · 0 评论 -
代码随想录第38天: 动态规划part01
【代码】代码随想录第38天: 动态规划part01。原创 2024-05-13 20:24:17 · 229 阅读 · 0 评论 -
代码随想录第37天:贪心part06
【代码】代码随想录第37天:贪心part06。原创 2024-05-12 17:52:29 · 452 阅读 · 0 评论 -
代码随想录第36天:贪心part05
【代码】代码随想录第36天:贪心part05。原创 2024-05-12 17:06:09 · 173 阅读 · 0 评论 -
代码随想录第35天:贪心part04
【代码】代码随想录第35天:贪心part05。原创 2024-05-11 05:08:11 · 230 阅读 · 0 评论 -
代码随想录第34天: 贪心part03
【代码】代码随想录第34天: 贪心part03。原创 2024-04-25 02:59:42 · 353 阅读 · 1 评论 -
代码随想录第32天: 贪心part02
【代码】代码随想录第32天: 贪心part02。原创 2024-04-21 21:13:19 · 230 阅读 · 0 评论 -
代码随想录第31天: 贪心part01
【代码】代码随想录第31天: 贪心part01。原创 2024-04-21 17:38:22 · 193 阅读 · 0 评论 -
代码随想录第30天: 回溯总结
排列问题:N个数按一定规则全排列,有几种排列方式。子集问题:一个N个数的集合里有多少符合条件的子集。组合问题:N个数里面按一定规则找出k个数的集合。切割问题:一个字符串按一定规则有几种切割方式。棋盘问题:N皇后,解数独等等。原创 2024-04-21 15:29:12 · 163 阅读 · 0 评论 -
代码随想录第29天: 回溯part05
【代码】代码随想录第29天: 回溯part05。原创 2024-04-18 20:31:19 · 158 阅读 · 0 评论 -
代码随想录第28天: 回溯part04
【代码】代码随想录第28天: 回溯part04。原创 2024-04-18 02:03:46 · 116 阅读 · 0 评论 -
代码随想录第27天: 回溯part03
【代码】代码随想录第27天: 回溯part03。原创 2024-04-16 03:49:45 · 112 阅读 · 0 评论 -
代码随想录第25天: 回溯part02
【代码】代码随想录第24天: 回溯part02。原创 2024-04-14 23:49:38 · 113 阅读 · 0 评论 -
代码随想录第24天: 初识回溯
【代码】代码随想录第24天: 初识回溯。原创 2024-04-13 21:43:13 · 145 阅读 · 0 评论 -
代码随想录第23天: 二叉树完结
【代码】代码随想录第23天: 二叉树完结。原创 2024-04-12 22:49:03 · 176 阅读 · 0 评论 -
代码随想录第22天:二叉树part08
【代码】代码随想录第22天:二叉树part08。原创 2024-04-11 21:37:08 · 230 阅读 · 0 评论 -
代码随想录第21天: 二叉树part07
【代码】代码随想录第21天: 二叉树part07。原创 2024-04-10 03:19:04 · 250 阅读 · 0 评论 -
代码随想录第二十天: 二叉树part06
【代码】代码随想录第二十天: 二叉树part06。原创 2024-04-09 02:38:29 · 307 阅读 · 0 评论 -
代码随想录第18天: 二叉树part05
【代码】代码随想录第18天: 二叉树part05。原创 2024-04-07 21:50:27 · 279 阅读 · 0 评论 -
关于递归和回溯的思考
两种方式都是在尝试找到一条从当前节点到叶子节点的路径,使得路径上节点值的总和等于给定的目标和。换句话说,每一层递归都有自己的变量环境,这些变量环境是相互独立的,所以不需要显式地进行回溯操作来恢复之前的状态。这种需要显式回溯的方式给状态管理带来了额外的复杂性,但它也提供了更大的灵活性,因为它允许你在同一层递归中多次修改和恢复状态。,这个值在这个新的调用栈中是固定的,不会因为其他递归调用的结果而改变。第二种方式中不需要回溯,因为它在每次递归调用时都传递了一个新的目标和,而不是直接修改原有的目标和。原创 2024-04-07 21:29:33 · 428 阅读 · 0 评论 -
代码随想录第17天: 二叉树part04
【代码】代码随想录第17天: 二叉树part04。原创 2024-04-06 21:51:40 · 124 阅读 · 0 评论 -
代码随想录第十六天: 二叉树part03
【代码】代码随想录第十六天: 二叉树part03。原创 2024-04-05 03:03:03 · 362 阅读 · 0 评论 -
代码随想录第15天: 二叉树part02
【代码】代码随想录第15天: 二叉树part02。原创 2024-04-04 20:52:46 · 151 阅读 · 0 评论 -
代码随想录第14天: 二叉树的前中后序遍历
【代码】代码随想录第14天: 二叉树的前中后序遍历。原创 2024-04-02 20:55:50 · 115 阅读 · 0 评论 -
代码随想录第13天: 单调队列和小顶堆
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。输入: nums = [1,1,1,2,2,3], k = 2。给定一个非空的整数数组,返回其中出现频率前 k 高的元素。输入: nums = [1], k = 1。返回滑动窗口中的最大值。, n 是数组的大小。原创 2024-04-01 23:15:41 · 316 阅读 · 0 评论 -
代码随想录第11天: 栈的应用
例如:4 + 13 / 5,这就是中缀表达式,计算机从左到右去扫描的话,扫到13,还要判断13后面是什么运算符,还要比较一下优先级,然后13还和后面的5做运算,做完运算之后,还要向前回退到 4 的位置,继续做加法,你说麻不麻烦!所以就是用栈来存放,那么栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。每个运算对象可以是整数,也可以是另一个逆波兰表达式。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。原创 2024-03-31 19:55:40 · 1842 阅读 · 0 评论 -
代码随想录第10天:栈和队列基础操作
接口定义的方法之一,用于将指定的元素插入到队列中(如果可以立即这样做而不违反容量限制),如果队列已满,则返回。但是依然还是要用两个队列来模拟栈,只不过没有输入和输出的关系,而是另一个队列完全用来备份的!的同学可能依然想着用一个输入队列,一个输出队列,就可以模拟栈的功能,仔细想一下还真不行!所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。它用于检索并删除队列的头部元素,如果队列为空,则返回。使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈。原创 2024-03-29 14:33:29 · 1161 阅读 · 1 评论 -
代码随想录第九天: 字符串完结
这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1。示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2。原创 2024-03-29 12:25:16 · 602 阅读 · 1 评论 -
代码随想录第八天: 字符串的基本操作
给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。一些同学会使用split库函数,分隔单词,然后定义一个新的string字符串,最后再把单词倒序相加,那么这道题题目就是一道水题了,失去了它的意义。想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。原创 2024-03-27 23:30:17 · 1086 阅读 · 1 评论 -
代码随想录第七天: 哈希表Part02
四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n。这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。原创 2024-03-27 05:11:01 · 963 阅读 · 1 评论 -
代码随想录第六天: 哈希表(数组+HashSet+HashMap)
为什么会想到用哈希表哈希表为什么用map本题map是用来存什么的map中的key和value用来存什么的把这四点想清楚了,本题才算是理解透彻了。很多录友把这道题目 通过了,但都没想清楚map是用来做什么的,以至于对代码的理解其实是 一知半解的。// 注意Map的创建方法i++) {// 注意Map中如何查找key是否存在res[1] = i;// 注意Map如何通过key查找valuebreak;// 注意Map如何添加元素return res;原创 2024-03-25 20:25:25 · 2359 阅读 · 1 评论 -
代码随想录第四天 链表Part02
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。原创 2024-03-23 15:00:13 · 887 阅读 · 0 评论 -
代码随想录第三天: 链表(虚拟头节点+基本操作实现)
/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)原创 2024-03-22 13:51:19 · 893 阅读 · 1 评论 -
代码随想录第二天-滑动窗口+相向双指针+模拟
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是。窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。数组其实是有序的, 只不过负数平方之后可能成为最大数了。原创 2024-03-21 15:55:39 · 851 阅读 · 1 评论 -
代码随想录第一天-双指针+二分法
我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] (这个很重要非常重要)。区间的定义这就决定了二分法的代码应该如何写,while (left原创 2024-03-20 14:53:10 · 2005 阅读 · 1 评论