随想

day01 代码随想录算法训练营 27. 移除元素

题目: 27. 移除元素 感悟: 用快慢指针。 本题是要原地删除。 而删除这个行为在真实的计算机的数组里,是覆盖。 所以,就用两个指针,(人) 一个跑的快,一个跑的慢。他们身上带了个对讲机。 跑的快的那个人负责检测后面的数字符合要求不,比如,要不等于3的,遇到一个2,告诉跑的慢的说2符合要求。遇到一 ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营第十六天 |104.二叉树的最大深度,559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

一、104.二叉树的最大深度 题目链接: LeetCode 104. 二叉树的最大深度 学习: 思路: 分别求左子树和右子树的高度,返回给根结点,加1之后是根结点的深度,这是后序遍历的思路 二、559.n叉树的最大深度 题目链接: LeetCode 559. N 叉树的最大深度 学习前: 思路: 后 ......
深度 随想录 训练营 节点 随想

代码随想录day 02 双指针 滑动窗口 螺旋矩阵

有序数组的平方题目如下: 如果是可以使用O(nlogn)或以上复杂度的算法,本题可以简单的先平方一遍,然后使用排序算法就可以了 但是要求使用O(n)复杂度的算法,那么我首先想到的是昨天的快慢指针类似的想法: 我想先平方一次数组,然后从中间开始排序,如下 但是运行之后发现从中间开始进行相邻元素的比较好 ......
随想录 矩阵 指针 螺旋 随想

day01 代码随想录算法训练营 704. 二分查找

题目: leetcode 704. 二分查找 感悟: 困扰我多年的二分查找对于边界的判断,我终于理解了。 难点: 难点1:定边界right right = len(nums)还是len(nums)-1 难点2:while循环 while left < right 还是 left <= right 难 ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第十五天 | 层序遍历 ,226.翻转二叉树,101.对称二叉树

一、二叉树层序遍历 题目链接: LeetCode 102. 二叉树的层序遍历 LeetCode 107. 二叉树的层序遍历 II LeetCode 199. 二叉树的右视图 LeetCode 637. 二叉树的层平均值 LeetCode 429. N 叉树的层序遍历 LeetCode 515. 在每 ......
随想录 训练营 随想 算法 代码

代码随想录day 01 二分法与快慢指针

二分法题目: 实现代码如下: 值得注意的是实现的方法是利用左闭右开区间还是左闭右闭区间 根据选择的不同,判断条件不同 将迭代的值带入到条件看符不符合区间要求就不会混淆二者 快慢指针题目: 本题实际上可以通过二重for循环暴力求解,复杂度是O(n^2) 但是测试过程中发现超时遂放弃 利用快慢指针在数组 ......
二分法 随想录 快慢 指针 随想

代码随想录算法训练营第十四天 | 二叉树理论基础,递归遍历,分别迭代遍历, 统一迭代遍历

一、二叉树理论基础 学习: 1. 从二叉树是否包含数值进行分类: 无数值:完全二叉树和满二叉树 有数值的:二叉搜索树和平衡二叉搜索树(AVL,Adelson-Velsky and Landis)。其中二叉搜索树指数值按照从小到大的顺序是左子树<根结点<右子树,平衡指的是左右子树高度差不超过1 2. ......
随想录 训练营 随想 算法 理论

代码随想录算法训练营第二天 | 239. 滑动窗口最大值,347.前 K 个高频元素

一、239. 滑动窗口最大值 题目链接: LeetCode 239. 滑动窗口最大值 学习前: 思路: 无 学习后: 自定义双端队列,实现push、pop、peek方法,使得队列单调非增。peek方法不变;当入队时,若当前元素比队尾元素大,则pop队尾,直到队列为空或当前元素不大于队尾元素;当出队时 ......
随想录 最大值 训练营 随想 算法

编程随想曲周刊(第60期)

这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 运维 Grafana和Prometheus的国产化平替来了 工具 分享我平时使用的几款免费的 AI 文字生成图片的在线网站 文章 朱令去世:人性中最难克服的恶,就是见不得身边人比自己好 生活 包头印象城盛大开业,焕活敢噻青年生活主 ......
随想曲 随想 周刊

代码随想录算法训练营第十一天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

一、20. 有效的括号 题目链接: LeetCode 20. 有效的括号 学习前: 思路: 当前元素为左括号,直接入栈 当前元素为右括号,若找到对应的左括号匹配,则循环继续;反之返回false 若栈为空,返回true;反之false 时间复杂度:O(n) 空间复杂度:O(n) 学习后: 采用入栈右括 ......

代码随想录算法训练营第十天 | 栈与队列理论基础,232.用栈实现队列,225.用队列实现栈

一、栈与队列理论基础 学习: 1. 定义 栈先进后出 队列先进先出 2. 底层实现 均可以通过数组或链表进行实现 二、232.用栈实现队列 题目链接: LeetCode 232.用栈实现队列 学习前: 思路: 无 学习后: 不同方法有部分功能实现是一致的,则可以进行抽象提取,实现复用性 两个栈实现队 ......
队列 随想录 训练营 随想 算法

代码随想录算法训练营第六天|454.四数相加二、383.赎金信、15.三数之和、18.四数之和

LeetCode 454.四数相加二 题目链接:454.四数相加二 提示:统计出现的次数; 采用 map , key 存 值,value 存次数!!! LeetCode 383. 赎金信 题目链接:383.赎金信 提示: 字符串.length() 可以直接求出字符串的长度,字符串.toCharArr ......
之和 随想录 训练营 随想 算法

代码随想录算法训练营第八天 | 344.反转字符串,541.反转字符串II,卡码网:54.替换数字,151.翻转字符串里的单词,卡码网:55.右旋转字符串

一、344.反转字符串 题目链接: LeetCode 344.反转字符串 学习前: 思路: 相向指针。left=0,right=length-1,不停交换left和right的值 时间复杂度:O(n) 空间复杂度:O(1) 学习后: 了解swap函数通过位运算实现的方式 二、541.反转字符串II ......
字符串 字符 随想录 训练营 随想

代码随想录算法训练营Day 6| 242. 有效字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

题目和相关内容的链接 哈希表倒不是一种明确的容器,他更像是一种存储和处理数据的结构和思想,通过用空间换时间,通过索引的方式直接访问元素,从而大大降低了遍历容器的时间开销。所以哈希表是一种基于key - value的处理思路,在具体的实现过程中,会考虑到哈希函数、哈希碰撞(拉链法、线性探索法等等)。 ......
随想录 之和 训练营 数组 交集

代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

一、454.四数相加II 题目链接: LeetCode 454.四数相加II 学习前: 思路: 首先定义两个HashMap对象record12和record34,对应的key存放两个数组元素的和,value存放计算的和出现的次数 接着遍历record12,若record存在与之和为0的元素,则计算两 ......
之和 随想录 训练营 随想 算法

代码随想录算法训练营第六天|242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

LeetCode 242.有效的字母异位词 题目链接:242.有效的字母异位词 提示:字符串 charAt() 方法的使用 LeetCode 349.两个数组的交集 题目链接:349.两个数组的交集 提示:哈希法,Set 集合的使用,判断元素是否存在!!! LeetCode 202.快乐数 题目链接 ......
随想录 之和 训练营 数组 交集

代码随想录算法训练营第五天| LeetCode242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

LeetCode242.有效的字母异位词 ● 今日学习的文章链接和视频链接 代码随想录 (programmercarl.com) 题目链接 242. 有效的字母异位词 - 力扣(LeetCode) ● 自己看到题目的第一想法 public boolean anagram(String s, Stri ......
随想录 之和 训练营 数组 交集

代码随想录算法训练营第六天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1.两数之和

一、哈希表理论基础 学习: 1. 哈希法 当需要查询一个元素是否出现过,或者一个元素是否在集合里,首选哈希法 2. 实现哈希法的3种数据结构 数组:在哈希值个数比较小且范围可采用 集合:在哈希值个数或者范围较大时可采用 map:当既需要key,又要value时可采用 二、242.有效的字母异位词 题 ......
随想录 之和 训练营 数组 交集

代码随想录--字符串

344. 反转字符串 https://leetcode.cn/problems/reverse-string/ class Solution { public: void reverseString(vector<char>& s) { int size = s.size(); for(int j ......
随想录 字符串 随想 字符 代码

代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表二

LeetCode 24.两两交换链表中的节点 题目链接: 24.两两交换链表中的节点 提示:链表问题,首先用虚拟头节点,让链表节点的处理具有一致性!!! LeetCode 19.删除链表的倒数第N个节点 题目链接:19.删除链表的倒数第N个节点 注意点:快慢指针,链表删除元素得找到该元素的前一个元素 ......
节点 随想录 环形 训练营 随想

代码随想录算法训练营第四天| LeetCode24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07. 链表相交、142.环形链表II

LeetCode24. 两两交换链表中的节点 ● 今日学习的文章链接和视频链接 代码随想录 (programmercarl.com) 题目链接 24. 两两交换链表中的节点 - 力扣(LeetCode) ● 自己看到题目的第一想法 主要是把这个过程想清楚,链表交换的题目主要想明白要动几个指针,指针改 ......
节点 随想录 环形 训练营 随想

代码随想录算法训练营第五天 | 复习和总结

一、LeetCode 142.环形链表II 自己再根据思路把代码独立写了一遍,并对照参考代码查漏补缺,进一步优化 二、206.反转链表 掌握2种递归写法,并用代码实现 从后向前遍历的递归,有点绕,多花了点时间理解 三、LeetCode 24. 两两交换链表中的节点 掌握递归写法,并用代码实现 再先理 ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第天|LeetCode203.移除链表元素707.设计链表206.反转链表

LeetCode203.移除链表元素 ● 今日学习的文章链接和视频链接 代码随想录 (programmercarl.com) 题目链接 203. 移除链表元素 - 力扣(LeetCode) ● 自己看到题目的第一想法 之前做这道题时想的不是很清楚,浅看了一下代码随想录的思路,又重新写了一边。删除链表 ......
随想录 训练营 随想 算法 LeetCode

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

一、24. 两两交换链表中的节点 题目链接: LeetCode 24. 两两交换链表中的节点 学习前: 思路: 未新增虚拟结点。节点数为0,1,2需要另外讨论。当节点数>=2时,返回的head值为第2个节点,需要3个指针first、second、prev,分别是第一个节点和第二个节点,以及第一个节点 ......
节点 随想录 环形 训练营 随想

代码随想录算法训练营第三天|203.移除链表元素、707.设计链表、206.反转链表

LeetCode 203.移除链表元素 题目链接:203.移除链表元素 原链表删除元素(需要区分头节点和非头结点) 使用虚拟头节点,统一链表操作(注意:新链表头结点是虚拟头节点的下一节点) LetCode 707.设计链表 题目链接:707.设计链表 注意:头节点采用虚拟头节点,使得链表操作具有一致 ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营第三天 | 链表理论基础,203.移除链表元素,707.设计链表,206.反转链表

一、链表理论基础 学习: 1. 链表定义 线性表的一种存储方式,在逻辑上连续的数据在物理存储中可以不连续。 class ListNode { int val; ListNode next; ListNode() { } ListNode(int val) { this.val = val; this ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营Day3 | 203.移除链表元素、707.设计链表、206.翻转链表

这三道题都不涉及什么难以理解的算法,是对链表基础知识的一个复习巩固 对于有数据结构基础的同学来说这个没有什么难度 但是,写代码的过程中,我明显感觉到,我需要更加完善和统一的代码风格,作为一个前OIer,我的c和cpp混用的情况在基础数据结构的封装层面造成了不小的混乱! 我需要去补充cpp的内容的,或 ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营Day2 |977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵 II

明天四级考试了,时间非常紧张,好在这些数组相关的算法题很久之前就做过,思路上是不存在不理解的地方的。 有序数组的平方是一道非常直观的双指针方法的应用,实现过程之中没有什么坑。 长度最小的子数组就是我们的滑动窗口方法了,题目不难,但是这种处理方式有着很深刻的背景,之后还会遇到此问题的变种。 螺旋矩阵问 ......
数组 随想录 训练营 矩阵 螺旋

代码随想录算法训练营第二天| LeetCode977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

LeetCode977.有序数组的平方 ● 今日学习的文章链接和视频链接 代码随想录 (programmercarl.com) 题目链接 977. 有序数组的平方 - 力扣(LeetCode) ● 自己看到题目的第一想法 昨天正好做了这道题目,总体来说就是用双指针法,要么从绝对值最小的数开始排序,要 ......
数组 随想录 训练营 矩阵 螺旋

代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

一、977.有序数组的平方 题目链接: LeetCode 977. 有序数组的平方 学习前: 思路: 双向指针。left是从左往右遍历数组,right是从优往左遍历数组,将left和right中绝对值较大数的平方从右往左放入新数组中;新思路:if(left+right>=0)right,else l ......
数组 随想录 训练营 矩阵 螺旋