代码随想录训练营记录
文章平均质量分 58
记录刷题训练每一天,沉淀自己的思路
Ryan5207
希望我的文章能够给需要的人带来一点点帮助,这样就可以了
展开
-
代码随想录训练营|二叉树part06| 二叉树遍历方式(迭代版)
【代码】代码随想录训练营|二叉树part06| 二叉树遍历方式(迭代版)原创 2023-11-19 10:05:30 · 96 阅读 · 0 评论 -
代码随想录训练营| 二叉树part01 | 二叉树的遍历方式(递归版)
给定一个二叉树的根节点。原创 2023-11-12 16:31:55 · 109 阅读 · 0 评论 -
代码随想录训练营day13 | 栈与队列part03 | 滑动窗口最大值 && 前K个高频元素
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。思路:首先维护一个队列,这个队列入口都储存每次滑动窗口的最大值。你能在线性时间复杂度内解决此题吗?返回滑动窗口中的最大值。原创 2023-11-11 20:56:42 · 92 阅读 · 0 评论 -
代码随想录训练营day11 | 栈与队列 part2 | 有效的括号 && 删除字符串中的所有相邻重复项
思路:遍历字符串,如果是左括号时,则把对应的右括号放入栈中。如果是右括号时,则取出栈顶位置的元素,判断是否一致。出错的三种类型:1. 左括号没有对应的匹配选项 2.右括号没对应的匹配选项 3. 左右括号的匹配类型不一致。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。思路:“开心消消乐”,定义一个栈,遍历字符串,如果栈内存在元素,并且等于栈顶元素则弹出,给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。原创 2023-11-05 18:28:58 · 74 阅读 · 0 评论 -
代码随想录训练营day10 | 栈与队列part1 | 用栈实现队列 && 用队列实现栈
思路 : 利用栈的先进后出的特性,构建两个栈来模拟队列,一个负责进栈,一个负责出栈。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(原创 2023-11-04 17:29:35 · 69 阅读 · 0 评论 -
代码随想录训练营day08 | 字符串 part2 | 动态口令 && 找出字符串中第一个匹配项的下标
思路:先反转前K个,再反转区间k到字符串结尾,最后一块反转达到左旋转的效果。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。某公司门禁密码使用动态口令技术。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。请返回更新后的密码字符串。原创 2023-11-04 16:33:49 · 47 阅读 · 0 评论 -
代码随想录训练营day08 | 字符串 part1 | 路径加密 && 反转字符串里面的单词
现需将路径加密,加密方法为将。思路:按照 "."进行切分后用空格连接。中的分隔符替换为空格 "",请返回加密后的字符串。假定一段路径记作字符串。原创 2023-11-01 22:52:38 · 99 阅读 · 0 评论 -
代码随想录训练营day07 | 哈希表part2 | 三数之和 && 四数之和
示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]给定数组 nums = [-1, 0, 1, 2, -1, -4],原创 2023-10-31 22:51:32 · 42 阅读 · 0 评论 -
代码随想录训练营day07 | 哈希表part2 | 四数相加II && 赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。否则返回 false。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。杂志字符串中的每个字符只能在赎金信字符串中使用一次。原创 2023-10-31 22:24:51 · 71 阅读 · 1 评论 -
代码随想录训练营day06 | 哈希表 part1 | 快乐数&&两数之和
快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。给定 nums = [2, 7, 11, 15], target = 9。因为 nums[0] + nums[1] = 2 + 7 = 9。编写一个算法来判断一个数 n 是不是快乐数。原创 2023-10-30 22:56:18 · 62 阅读 · 0 评论 -
代码随想录训练营day06 | 哈希表 part1 | 有效的字母异位词&& 两个数组的交集
思路:新建一个集合set,遍历数组nums1,判断遍历的元素是否在另一个数组nums2内,如果在放入新建的集合set内,最后返回set。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。思路:做一个长度为26的数组,数组的本质也是哈希表,key为数组的索引,value为数组的值。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。原创 2023-10-30 22:35:56 · 52 阅读 · 1 评论 -
代码训练录训练营day04 | 链表part2 | 环形链表II
有环之后,来找环的入口,假设从头结点到环形入口节点 的节点数为x。从相遇节点 再到环形入口节点节点数为 z。判断是否有环的思路是定义快慢指针,慢指针每次移动一步,快指针每次移动两步,快慢指针如果在环内相遇则链表有环,如果没有相遇则链表无环。让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。原创 2023-10-30 18:50:52 · 1125 阅读 · 1 评论 -
代码随想录训练营| 链表 part2 | 删除链表倒数第N个节点
双指针法,定义快慢指针指向头结点,要删除倒数第n个节点,想让fast向前移动n步,然后快慢指针同时移动,这样当fast为null时,slow指向的节点就是要删除的节点,这样只要让slow指向下个节点时,这样就删除倒数第n个节点。为了避免单独分析单个节点的情况,所以最好先定义一个虚拟头结点指向头结点,这样就避免单独分析情况。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1 输出:[1]原创 2023-10-29 19:16:14 · 34 阅读 · 1 评论 -
代码随想录训练营day04 | 链表part2 | 两两交换链表的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。点内部的值,而是需要实际的进行节点交换。你不能只是单纯的改变节。原创 2023-10-28 22:14:14 · 96 阅读 · 1 评论 -
代码随想录训练营day03 | 链表 part01 | 反转链表(经典)
思路:拿上图为例,定义一个空节点 pre,一个移动指针cur,一个存储cur下一个节点变量tmp,因为存在反转操作,所以要在反转之前把他的下个节点存起来,才能进行下一步操作。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。题意:反转一个单链表。原创 2023-10-27 23:19:49 · 778 阅读 · 1 评论 -
代码随想录训练营day01 | 数组 part1 | 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。当 right = left 时 此时还应该 继续查找,不该跳出。原创 2023-10-25 19:55:58 · 223 阅读 · 1 评论