
代码随想录跟练
文章平均质量分 92
召木
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
代码随想录跟练21天——LeetCode332.重新安排行程, 51. N皇后,37. 解数独
给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。编写一个程序,通过填充空格来解决数独问题。原创 2024-10-28 21:45:01 · 698 阅读 · 0 评论 -
代码随想录跟练20天——LeetCode93.复原IP地址, 78.子集,90.子集II,491.递增子序列, 46.全排列, 47.全排列 II
示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]这是为什么呢,就是上面我刚说的,如果要对树层中前一位去重,就用used[i - 1] == false,如果要对树枝前一位去重用used[i - 1] == true。大家应该很清晰的看到,树层上对前一位去重非常彻底,效率很高,树枝上对前一位去重虽然最后可以得到答案,但是做了很多无用搜索。会返回一个有效的迭代器,且与。原创 2024-10-25 20:10:43 · 824 阅读 · 0 评论 -
代码随想录跟练第十九天——LeetCode39. 组合总和,40.组合总和II,131.分割回文串
去重逻辑:如果当前nums和前一个nums相等,并且前一个没有用过,这样的话就会导致前一个的所有组合中即将和后一个相同的数值的组合一致,所以用continue。给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。原创 2024-10-24 22:40:56 · 668 阅读 · 0 评论 -
代码随想录跟练第十八天——LeetCode 77组合,216.组合总和III,17.电话号码的字母组合
n = 4,k = 3, 目前已经选取的元素为0(path.size为0),n - (k - 0) + 1 即 4 - ( 3 - 0) + 1 = 2。示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]],生成对应的所有字母组合。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]原创 2024-10-17 11:06:14 · 812 阅读 · 0 评论 -
代码随想录跟练第十六天——LeetCode 236. 二叉树的最近公共祖先235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
示例 2: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 输出: 5 解释: 节点 5 和节点 4 的最近公共祖先是节点 5。示例 1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5 和节点 1 的最近公共祖先是节点 3。首先找到需要删除的节点;例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]原创 2024-10-15 21:44:18 · 963 阅读 · 0 评论 -
代码随想录跟练第十七天——LeetCode 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树
用于定义的C++结构体TreeNode。这是标准的二叉树节点表示法,用于表示二叉树中的每个节点。1.这行代码定义了一个名为TreeNode的结构体(struct),表示二叉树中的一个节点。这个是节点的值。val是一个整型变量,用于存储该节点上的数据。在二叉树中,每个节点通常会存储某个值,用于后续查找、插入等操作。3.这是指向左子节点的指针。left用于连接当前节点的左子节点。如果该节点没有左子节点,left会被设置为nullptr。原创 2024-10-15 21:37:44 · 653 阅读 · 0 评论 -
代码随想录跟练第十五天——LeetCode 617.合并二叉树 700.二叉搜索树中的搜索98.验证二叉搜索树 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数
首先检查当前两个节点是否存在,如果都存在,则将它们的值相加,并继续处理它们的左右子节点;合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。给定二叉搜索树(BST)的根节点和一个值。给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。原创 2024-10-15 17:53:34 · 749 阅读 · 0 评论 -
代码随想录跟练第十四天——LeetCode 404.左叶子之和 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树 654.最大二叉树
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。给定一个不含重复元素的整数数组。示例: 给定如下二叉树,以及目标和 sum = 22,通过给定的数组构建最大二叉树,并且输出这个树的根节点。给定一个二叉树,在树的最后一行找到最左边的值。给定的数组的大小在 [1, 1000] 之间。说明: 叶子节点是指没有子节点的节点。计算给定二叉树的所有左叶子之和。原创 2024-10-15 17:37:14 · 867 阅读 · 0 评论 -
代码随想录跟练第十三天——LeetCode 111.二叉树的最小深度222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。它遍历二叉树的所有可能路径,并将每条路径以字符串的形式存储在列表中,路径使用。给定二叉树 [1,2,2,3,3,null,null,4,4]给定二叉树 [3,9,20,null,null,15,7],给定二叉树 [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。说明: 叶子节点是指没有子节点的节点。返回它的最小深度 2.原创 2024-10-15 17:18:40 · 1095 阅读 · 0 评论 -
代码随想录跟练第十二天——LeetCode 226.翻转二叉树145.二叉树的后序遍历(opens new window)94.二叉树的中序遍历
已经荒废很久了,重新开始记录,继续二叉树。原创 2024-10-12 10:02:28 · 931 阅读 · 0 评论 -
代码随想录跟练第十一天——LeetCode 144.二叉树的前序遍历(opens new window)145.二叉树的后序遍历(opens new window)94.二叉树的中序遍历
二叉树基础知识:挖个坑后面补。原创 2024-09-05 12:39:07 · 807 阅读 · 0 评论 -
代码随想录第十天——LeetCode 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。2)pop:当要pop的值等于que的第一个(最大值)的时候说明这个值要真的被pop掉了,和他本身大小无关,只是滑窗滑到下一个了。平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )。该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。1)push:如果push的元素比前元素大,直接把前面元素删掉,给定一个非空的整数数组,返回其中出现频率前 k 高的元素。原创 2024-08-29 23:17:55 · 847 阅读 · 0 评论 -
代码随想录跟练第九天——LeetCode 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
拔了智齿后,好久没有总结了,先补一点。原创 2024-08-29 22:52:57 · 1310 阅读 · 0 评论 -
代码随想录跟练第七天——LeetCode541 反转字符串II,344反转字符串,54替换数字(第八期模拟)
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]输入: s = "abcdefg", k = 2。原创 2024-08-21 21:53:14 · 887 阅读 · 0 评论 -
代码随想录跟练第六天——LeetCode 第454题.四数相加II 383. 赎金信 第15题. 三数之和 第18题. 四数之和
示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]答案中不可以包含重复的三元组。原创 2024-08-21 16:40:20 · 1141 阅读 · 3 评论 -
代码随想录跟练第五天——LeetCode 242.有效的字母异位词,349. 两个数组的交集、第202题. 快乐数、1. 两数之和
主体思路为定义两个数组所有元素初始化为0,再定义一个数组存储交集,把两个列表中元素统计到数组中,比如列表:nums1 = [1,2,2,1], nums2 = [2,2],在数组中统计为count1[1] = 1,count1[2] = 1,注意统计的是出现的元素,如果列表中没有重复的元素个数为3,那么count1中长度为3,(不统计重复元素)判断交集时判断两个数组中元素值相乘是否为0;需要一个集合来存放遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,是否出现在这个集合。原创 2024-08-20 15:25:07 · 809 阅读 · 0 评论 -
代码随想录跟练第三天——LeetCode203.移除链表元素 707.设计链表 206.反转链表
关键是初始化的地方,可能有的同学会不理解, 可以看到双指针法中初始化 cur = head,pre = NULL,在递归法中可以从如下代码看出初始化的逻辑也是一样的,只不过写法变了。为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。递归法相对抽象一些,但是其实和双指针法是一样的逻辑,同样是当cur为空的时候循环结束,不断将cur指向pre的过程。原创 2024-08-18 00:42:39 · 1014 阅读 · 1 评论 -
代码随想录跟练第二天——LeetCode209长度最小的子数组、59螺旋矩阵、58区间和
第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。刚开始没有搞清楚题目意思,题目意思是将m*n的数组按照行或者列分为两部分,然后两部分的元素分别相加,得到A和B,然后求A和B差值的最小值。,而不进行比较和更新是不行的,因为这将始终记录当前的子数组长度,而不会确保它是最小的子数组长度。原创 2024-08-17 12:00:33 · 1123 阅读 · 0 评论 -
代码随想录跟练第四天——LeetCode 24 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。根据快慢法则,curA在A+B链表中找B,curB在A+B链表中找A,如果有交点的肯定能找到(好难理解)题意: 给定一个链表,返回链表开始入环的第一个节点。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2024-08-18 20:44:47 · 659 阅读 · 0 评论 -
代码随想录跟练第一天——LeetCode704二分查找、27移除元素、977有序数平方
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。元素的顺序可以改变。原创 2024-08-14 17:35:07 · 558 阅读 · 0 评论