随想录 总和 随想 字母
代码随想录 day18 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树
找树左下角的值 最简单就是想到层序遍历之后取第一个位置元素就是了 递归的话需要先判断哪里最深的节点 至于最左 保持中左右的遍历顺序 第一次得到最大深度处就是最左的 路径总和 有点像查找子树路径 所以递归回溯是比较好的选择 在求路径的适合,targetSum - node->val 是否为0的判断比一 ......
算法学习Day26组合总和、分割回文串
Day26组合总和、分割回文串 By HQWQF 2024/01/13 笔记 39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 ......
[代码随想录] 第四天
19.删除链表的倒数第N个节点https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 思路:使用前后指针,当删除倒数第N个节点时,快慢指针之间应该间隔N个元素,当快指针到达链尾时,慢指针next指向所要删除节点。 时间复杂度:O( ......
代码随想录 day17 平衡二叉树 二叉树的所有路径 左叶子之和
平衡二叉树 之前一直写迭代代码 没有怎么写递归 正好这题不是很好写迭代 练习一下递归 这题递归逻辑相对简单 左右子树高度差判断是不是大于一 可以直接返回结果 不大于一就高度max(l,r)+1 二叉树的所有路径 关键要点 这题适合先序遍历 回溯过程和递归过程是一起写的 进来几次就回溯几次 这样才能回 ......
[代码随想录] 第二天
203.移除链表元素https://leetcode.cn/problems/remove-linked-list-elements/ 思路:没什么好说的 /** * Definition for singly-linked list. * public class ListNode { * int ......
代码随想录算法训练营第一天
Leetcode704 二分查找 https://leetcode.cn/problems/binary-search/submissions/494474207/ 文档讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6 ......
[代码随想录] 第二天
977.有序数组的平方[https://leetcode.cn/problems/squares-of-a-sorted-array/] 思路:因为数组是非递减,数组有正有负,找到第一个非负数设为i,i将数组划分为前部分的负数组,后部分的非负数组,使用辅助数组将原数组平方部分存储,后部分使用正序存储 ......
代码随想录 day16 N 叉树的最大深度 完全二叉树的节点个数
N 叉树的最大深度 这题昨天做过二叉版本 n叉区别不大 完全二叉树的节点个数 层级遍历 入que的数量就是节点个数 ......
代码随想录 day15 十二题二叉树
二叉树的层序遍历 基本的层序遍历 二叉树的层序遍历 II 感觉直接正常遍历之后反转是最简单的想法了 二叉树的右视图 一开始很难想到 其实只需要返回每层的最后一个节点就可以了 也就是i == size - 1 二叉树的层平均值 比较简单 注意一下变量是double N 叉树的层序遍历 模板题 注意容器 ......
[代码随想录] 第一天
704.二分查找 [https://leetcode.cn/problems/binary-search/description/] 思路: 二分查找适用于在有序数组中查找目标值,左边边界为left,右边边界为right,每次使用middle=(right+left)/2,将原数组划分为[left, ......
day13 代码随想录算法训练营 递归遍历
题目: 144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 我的感悟: 用helper内部函数写更好 理解难点: 代码难点: 代码示例: 前序 # Definition for a binary tree node. # class TreeNode: # def __ini ......
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
描述 写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母) 数据范围: 1 \le n \le 1000 \1≤n≤1000 输入描述: 第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。 ......
代码随想录 day13 滑动窗口最大值 前 K 个高频元素
滑动窗口最大值 这题第一次见 比较难找到思路 滑动窗口的移动比较类似于队列的行为 但是我们需要找到其中的最大值 在线性时间复杂度下 只能维护这个队列保持单调性 但是我们没有这样的一个可以在移动中保持单调的数据结构 只能自己手动创建 我们利用deque进行队列的创建 这个队列有三个基本函数 pop 用 ......
day13 代码随想录算法训练营 347. 前 K 个高频元素 【待梳理】
题目:347. 前 K 个高频元素 我的感悟: 我用hash再排序。 卡尔用的小顶堆。 `heapq`是Python中的一个模块,它提供了堆队列(也称优先队列或者堆)的算法实现。在计算机科学中,堆是一种特殊的完全二叉树数据结构,其中每个父节点的值都小于或等于其子节点的值(在最小堆中)或者父节点的值都 ......
day13 代码随想录算法训练营 239. 滑动窗口最大值
题目:239. 滑动窗口最大值 我的感悟: 来难度了,有点意思, 理解难点: 需要实现自定义队列, 看了国外的解题思路和其他的回答,感觉还是卡尔的思路,更有意思。 实现队列: pop只弹出左边边界且左边界为最大值的时候 push 要维护队列里的大到小的单调性。把队尾小的都卷走 front查询最大值 ......
[转]Java8字符串和时间相互转换,使用模式字母的易错点
原文地址:Java 8 字符串和时间相互转换_java8字符串转时间-CSDN博客 1. 常见日期转换符号说明符号 说明 备注y 年 Y 本周所在的年 如果日期所在的周跨年了,年份就会是第二年的,需要注意M 月(month-of-year) d 日(day-of-month) D 年内的第几天(da ......
代码随想录 day14 二叉树的递归遍历 迭代遍历(栈) 统一遍历(栈)
二叉树的节点的孩子数量称之为度 所有节点度为0或2的二叉树是满二叉树 完全二叉树是所有非叶节点都是度为2的节点 叶子都尽可能的靠左 前序遍历:中左右 中序遍历:左中右 后续遍历:左右中 这里左右中指的是当前节点的遍历顺序 中就是先遍历当前节点 再遍历子树 前序遍历递归代码: 中序遍历递归代码: 后序 ......
代码随想录算法训练营第二十七天 | 39. 组合总和,40.组合总和II,131.分割回文串
一、39. 组合总和 题目链接: LeetCode 39. 组合总和 学习前: 思路: 无 学习后: 思路: 需要额外定义的成员变量: private List<List<Integer>> res; private List<Integer> list; 调用函数: List<List<Integ ......
编程随想曲周刊(第62期)
这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 工具 自动清除网站加在 URL 后面的冗余内容:ClearURLs 文章 去做吧,停止空谈 卸磨杀罗振宇 新巨富是如何诞生的 生活 泼天的富贵终于轮到哈尔滨了 孙燕姿妹妹发文:无法忍受姐姐的所作所为,决定断绝关系! 播客 东方甄选 ......
day11 代码随想录算法训练营 150. 逆波兰表达式求值
题目:150. 逆波兰表达式求值 我的感悟: 注意int(a/b)是0向截断 比如 -2.3 会得到-2; 比如3.6 会得到3 a//b是向下取整,比如是-2.3 会得到-3;比如3.6 会得到3 主要是负数不同 理解难点: 0向取整注意 注意先弹出的是右边的,(想象二叉树的结构。先弹出的是右边节 ......
day11 代码随想录算法训练营 1047. 删除字符串中的所有相邻重复项
题目:1047. 删除字符串中的所有相邻重复项 我的感悟: 做过的题,还是有印象的。 本身也不难,独立写出来了。 理解难点: 代码难点: 代码示例: class Solution: def removeDuplicates(self, s: str) -> str: stack = [] for i ......
day11 代码随想录算法训练营 20. 有效的括号
题目:20. 有效的括号 我的感悟: 脑回路清奇 理解难点: 遇到左括号存对应的右括号 3中情况, 1.左括号多了 2.右括号多了 3.左右括号不匹配 剪枝:奇数可以直接剪枝 注意为空的判断,防止报错 代码难点: 存3种情况 23情况要返回False 其他直接pop 最后判断stack栈为不为空,来 ......
算法学习Day25回溯、组合总和
Day25回溯、组合总和 By HQWQF 2024/01/07 笔记 216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: ......
2023年题解总和
洛谷P3161 [CQOI2012] 模拟工厂题解 P3161[CQOI2012]模拟工厂题解。题目 其实发现这是一道状压,发现这道题是一道数学题,其实就很简单了。对于每一次的订单我们可以设: \(time\) 为距离下一个订单的时间。 \(num\) 为这个订单要生产的数量。 \(x\) 为生产能 ......
代码随想录算法训练营第二十五天 | 216.组合总和III,17.电话号码的字母组合
一、216.组合总和III 题目链接: LeetCode 216.组合总和III 学习前: 思路: 返回类型和参数: void fun(int n, int k, int start) 终止条件: int len = list.size(); if(len==k){ if(n==0 ){ List< ......
代码随想录day11 有效括号 删除字符串中的所有相邻重复项 逆波兰表达式求值
有效括号 思路出来代码比较简单 左半括号出现就压右半进栈 这样比左右括号直接压进去 做的比较会少一些 栈为空但是还有符号出现或者是右半括号和当前元素对不上 显然为false 剩下的情况就是栈顶和当前元素匹配 pop即可 栈尤其适合做这类匹配类的题目 删除字符串中的所有相邻重复项 消消乐 直接压进栈做 ......
代码随想录算法训练营第二十四天 | 回溯算法理论基础,77. 组合
一、回溯算法理论基础 学习: 1. 基本概念 回溯法是一种搜索方式 回溯的本质是穷举,是递归的副产品,即回溯算法就是递归算法 回溯解决的问题都能理解成树形结构,一般是在集合中递归查找子集。集合的大小构成树的宽度(n叉树),递归的深度构成了树的深度 2. 回溯解决的问题 (1)组合问题:N个数里面按一 ......
代码随想录 day10 栈模拟队列 队列模拟栈
栈模拟队列 大概了解一下思路自己就可以很快写出来了 我们需要第二个辅助栈帮助我们把stackIn的顺序颠倒,这样FILO的栈颠倒后 pop的顺序就和FIFO的队列顺序一致了 大概就是这张图 队列模拟栈 题目要求使用两个队列模拟栈 其实可以只需要一个队列就可以模拟 栈的出栈顺序是最后一个先出栈,那么队 ......