![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码随想录算法训练营
文章平均质量分 61
代码随想录算法训练营
vv_f
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营刷题Day27|39.组合总和、40.组合总和II、131.分割回文串
另外:vector不能作为map的key,除非重载。1、关键:StartIndex就是下一次取哪里。2、另外:双指针法是删除连续重复的元素。原创 2023-09-11 20:48:20 · 85 阅读 · 0 评论 -
代码随想录算法训练营刷题Day25|216.组合总和、17.电话号码的字母组合
1、关键:用回溯,不再用StartIndex+1,因为是两个集合里面找组合。1、关键:递归终止条件前判断sum是否等于targetSum。原创 2023-09-10 20:29:59 · 80 阅读 · 0 评论 -
代码随想录算法训练营刷题Day24|回溯法理论基础、77.组合
(2)切割问题:问切割一种字符串,使子串都是回文子串,有多少种切割方式。1、关键:易错点—回溯 path.pop_back();(5)棋盘问题:N皇后、解数独。原创 2023-09-10 17:43:18 · 88 阅读 · 0 评论 -
代码随想录算法训练营刷题Day16|104.二叉树的最大深度 、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
1、如果是普通二叉树,用前中后序遍历、层序遍历都可以统计节点个数。1、关键:和二叉树最大深度的区别是处理左右孩子不为空的逻辑。3、关键:根节点的高度 = 二叉树的最大深度。:给出一个完全二叉树,求出该树的节点个数。1、高度:二叉树最大深度 = 根节点高度。:给定一个 n 叉树,找到其最大深度。1、高度:节点到叶子节点的距离+1。:给定一个二叉树,找出其最小深度。:给定一个二叉树,找出其最大深度。2、深度:节点到根节点的距离+1。2、代码:(普通二叉树)原创 2023-04-29 21:10:13 · 62 阅读 · 0 评论 -
代码随想录算法训练营刷题Day15|层序遍历10、226.翻转二叉树、101.对称二叉树 2
199:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。2、具体过程:将节点加入队列;记录当前层的节点个数;弹出有节点个数的节点,并将左右子节点加入队列。2、第一次写没写出来,思路出错,就想用层序遍历再额外加一个数据结构去写,但是有很多问题。4、注意记录每次弹出的次数,而且不能用que.size(),因为que的长度是变化的。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历):给你一个二叉树的根节点。:给你二叉树的根节点。:给你二叉树的根节点。原创 2023-04-23 17:31:09 · 115 阅读 · 0 评论 -
代码随想录算法训练营刷题Day14|二叉树理论基础、递归遍历(144、145、94)、迭代遍历(144、145、94)、统一迭代
/数据域int val;//指针域//构造函数。原创 2023-04-23 10:49:17 · 54 阅读 · 0 评论 -
代码随想录算法训练营刷题Day13|239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。1、思路:感觉很像之前做的车道检测的七次多项式系数用到的queue,不断pop和push。2、自定义一个队列:使用deque,因为queue的底层实现也是deque。:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。小顶堆:父亲元素比孩子元素小,根节点是最小元素。2、不同的定义方式得到大顶堆、小顶堆:默认大顶堆。大顶堆:父亲元素比孩子元素大,根节点是最大元素。push():从队列末加入,弹出比它小的元素。原创 2023-04-22 19:34:28 · 64 阅读 · 0 评论 -
代码随想录算法训练营刷题Day11|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合、左括号必须以正确的顺序闭合、注意空字符串可被认为是有效字符串。:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。原创 2023-04-21 21:55:42 · 80 阅读 · 0 评论 -
代码随想录算法训练营刷题Day10|理论基础、232.用栈实现队列、225. 用队列实现栈
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈;pop() -- 移除栈顶元素;top() -- 获取栈顶元素;empty() -- 返回栈是否为空。2、注意易混点:只有双头队列deque才可以push_back()、push_front()、pop_back()、pop_front()1、注意:不是要实现印象中的那些队列的函数,而是要看题意,比如这个pop还要返回值。1、注意:不是要实现印象中的那些栈的函数,而是要看题意,比如这个题pop还要返回值。2、关键:只有当out是。原创 2023-04-21 21:22:02 · 44 阅读 · 0 评论 -
代码随想录算法训练营刷题Day08|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。2、注意:字符串的本质就是字符串数组,这道题就是字符串数组,如果是字符串也可以用数组中可以用的一些方法来做。12、s.substr(pos,n):从索引pos开始,提取连续的n个字符,包括pos位置的字符。2、reverse函数的使用:reverse(s.begin(),s.end());返回一个指向s的引用。原创 2023-04-21 20:18:29 · 147 阅读 · 0 评论 -
代码随想录算法训练营刷题Day07|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和、总结
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0原创 2023-04-12 00:28:05 · 91 阅读 · 0 评论 -
代码随想录算法训练营刷题Day06|哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
需要掌握——哈希表的内部实现原理、哈希函数、哈希碰撞、常见哈希表的区别、数组、set和map什么时候想到用哈希表:当我们遇到了要快速判断一个元素是否出现在集合里的时候,就要考虑哈希法1、原创 2023-04-11 01:00:07 · 134 阅读 · 0 评论 -
代码随想录算法训练营刷题Day04|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。快慢指针,快指针每次走两个节点,慢指针每次走一个节点,快慢指针如果可以相遇则说明一定有环。1、第一次写:反转链表+删除节点+反转链表,AC。:给你一个链表,删除链表的倒数第。1、交换过程:如下图所示。原创 2023-04-08 19:58:29 · 115 阅读 · 1 评论 -
代码随想录算法训练营刷题Day03|链表理论基础、203.移除链表元素、707.设计链表、206.反转链表
1、定义:链表是一种通过指针串联在一起的线性结构2、要素:节点—每个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为头节点也就是head3、单链表:每个节点有一个指针域,只能指向节点的下一个节点4、双链表:每个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表既可以向前查询也可以向后查询5、循环链表:链表首尾相连int val;//数据域//指针域。原创 2023-04-08 01:17:24 · 108 阅读 · 1 评论 -
代码随想录算法训练营刷题Day01|704.二分查找、27.移除元素
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。3、vector和array的区别:vector的底层实现是array,erase是一个o(n)的操作:删除元素并前移。原创 2023-04-05 19:20:17 · 688 阅读 · 2 评论 -
代码随想录算法训练营刷题Day02|977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II
给定一个含有 n 个正整数的数组和一个正整数 target。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。②起点(startx,starty)、 螺旋矩阵当前点(i,j)、终点 n-offset (每一圈后的偏移量offset):给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。①总循环:转的圈数(如果n为奇数,还要填充螺旋矩阵中间位置)原创 2023-04-06 16:14:45 · 397 阅读 · 0 评论