
lec
文章平均质量分 65
不白兰
静下心来,沉淀
展开
-
[代码随想录21回溯]组合问题,电话号码的字母组合问题
回溯的提出是解决循环问题,回溯的提出就是为了解决排列和组合问题,以及多层遍历问题,因为如果遍历的层数越多我们的效率就会越低,回溯加上剪枝能很好解决这个问题。原创 2024-12-19 23:30:08 · 188 阅读 · 0 评论 -
[代码随想录20二叉树]二叉树的公共祖先问题
二叉树的公共祖先都是老朋友了,但是搜索二叉树的题目,相对于简单一点,因为他本身是有序的,所以我们需要函数自己参数去递归或者迭代,也可以通过新建函数去递归,通过两个父子指针去迭代。原创 2024-12-17 22:31:40 · 317 阅读 · 0 评论 -
[代码随想录18]二叉树的最低公共祖先
530. 二叉搜索树的最小绝对差 - 力扣(LeetCode)原创 2024-12-15 23:13:14 · 227 阅读 · 0 评论 -
[代码随想录15]二叉树的所有路径,平衡二叉树,左叶子之和,完全二叉树-递归版本
二叉树的接下来的题目,会有所提高,还是考察二叉树的性质!以及递归和迭代的思路。原创 2024-12-12 23:23:46 · 360 阅读 · 0 评论 -
[代码随想录14]二叉树的属性,翻转,对称,最大深度和最小深度
在二叉树的题目中,递归的解法无疑是是最简单和最好理解的,也能快速解题,本篇介绍一下递归的常见的二叉树题目。原创 2024-12-11 23:34:26 · 265 阅读 · 0 评论 -
[代码随想录13]二叉树的基本结构,递归法和迭代法,同意迭代,层序遍历
什么是二叉树?类比于生活中的大树小树,但是他只能有两个分叉,所以我们就有两种特殊情况满二叉树和完全二叉树,顾名思义,满二叉树就是树枝都长满了,完全二叉树就是按照顺序来叶子结点还差一点,接着,对于“长的好的”树形结构(有序的二叉树,左边节点都小于右边节点),成为二叉搜索树,俗称SB树,有序的目的就是为了查找的效率提升,但是我们查找数据是查找二叉树的高度次对高度严格平衡的,左右子树相差一个高度的成为平衡二叉搜索树,AVL树,但是这个太严格了,花费很多时间在旋转调节上,我们又提出了红黑树,达到相对平衡的效果。原创 2024-12-10 23:29:58 · 457 阅读 · 0 评论 -
[代码随想录11]栈和队列的应用,逆波兰表达式求值 、滑动窗口最大值、前 K 个高频元素
具体来说就是,计算机并不知道计算逻辑的优先级(括号的优先级),但是他能找到一个括号最先匹配的,,主要是考察思路和coding能力,在前面几道题目的基础上进行延伸的。,这样两个问题都能得到解决,足以可见逆波兰表达式(后缀表达式的腻害之处)。使用优先级队列,哈希表统计数据,压入数据,然后遍历出数据。tips:注意除法运算和减法的顺序第一次写错了,哈哈哈。,有什么方法可以跳过这些呢?就是后缀表达式,我们让。这个题目比较简单一点,同时保持队列是递减的就行。这门课程中学到,逆波兰表达式,俗称。一、逆波兰表达式求值。原创 2024-12-08 23:18:57 · 364 阅读 · 0 评论 -
[代码随想录08]字符串反转类型和字符串替换
对于字符串操作,最常用的还是双指针去遍历移动字符串,同时设计一些交换操作,我们可以通过库函数去学习很多字符串的操作,达到训练的目的。原创 2024-12-05 07:30:39 · 346 阅读 · 0 评论 -
[代码随想录07]哈希表的进阶巧妙操作,四数相加,赎金信,三数之和
哈希表的主要用法就是去重,牺牲空间建立索引去直接查找一个数!,希望兄弟们在接着刷题的过程中,能结合前面的一些方法形成自己的做题技巧。原创 2024-12-04 19:10:28 · 270 阅读 · 0 评论 -
[代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
哈希表是什么?一句话带你理解,简单来说我们对于杂乱的数据,怎么快速找到数据,如何做呢?一般的做法就是遍历复杂度为o(N)去找寻一个数据,但是吧,我们这样思考的话,还是花了大量时间去检查其他元素是否存在这个集合里面,如何优化呢?我们通过特定的计算把每个值都用特定的值来唯一表示起来,我们每次查询只需要通过计算,然后看这个特定的结构里面是否有对应映射的值,这种情况下,我们的查询效率就能达到o(1),这个做法也就是前文提到的空间换时间。有了特定的索引值去表示,这个数据是否存在,那么就会存在。原创 2024-12-03 00:14:05 · 1015 阅读 · 0 评论 -
[代码随想录04]两两链表的交换、删除倒数第N个节点、链表相交、链表带环
链表+双指针:双指针就是用来处理题目问题的,无论是判断链表相交还是带环,归根到底我们学的还是数学知识,巧妙用数学知识让我们解题目的速度会更快。代码更优雅学会链表的中的一些数学思想有助于我们在理解链表的基础操作上,处理更加复杂的问题!。原创 2024-11-30 07:57:43 · 359 阅读 · 0 评论 -
[代码随想录03]链表操作移除元素、设计链表、反转链表
链表:链表主要是考基础操作多一点,基本的对链表进行增删查改,所以我们必须要熟悉链表的底层数据结构,题目二的设计链表就是最好的题目。tips:关于链表需要遍历的问题,尽量使用伪头结点去处理,因为遍历操作一般是通过当前节点去改下一个节点,头结点会处于尴尬的地方,需要我们单独处理,为了简化操作,我们可以定义一个伪头,然后统一逻辑处理。总结一下我们常见的链表操作,主要熟悉增删查改,我们在写链表题目的时候最好画一个图,先保存什么,在修改什么,容易混乱。增加。原创 2024-11-30 00:23:00 · 864 阅读 · 0 评论 -
[代码随想录02]数组长度最小的子数组、螺旋矩阵、区间和、开发商购买土地
滑动窗口他是双指针的兄弟,咱们可以理解为一种有条件的双指针,他的两个指针被创建出来就是为了执行一个任务,这个任务可能是统计指针间的元素之和,亦或者是达到某一个条件不能就得换一种操作执行,然后又换回来,类似与取数据和收数据,收满了就得取,取空了就得收。前缀和的思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。前缀和 在涉及计算区间和的问题时非常有用!本质上就是空间换时间的做法,这个类似的做法在二叉树的递归操作里面很常见。原创 2024-11-28 23:55:47 · 559 阅读 · 0 评论 -
[代码随想录算法01] 704. 二分查找、27. 移除元素、977有序数组的平方
数组相关的最常用的操作的就是二分,因为二分可以很明显的将O(N)的时间复杂度降到O(logN),所以在一些中等的题目里面,我们很容易看到进阶的操作里面有优化时间复杂度的做法。下一个常见的操作就是双指针,双指针对于有序的数组处理问题就是一绝,他可以通过,两个指针的快慢不同,直接将O(N^2)的暴力枚举,直接降低成O(2N),也就是两次遍历即可。原创 2024-11-28 00:45:26 · 446 阅读 · 0 评论 -
刷力扣看见一个寻找单身狗的问题?【力扣题解】
今天刷力扣遇到一道有意思的题目,题目是写着撞色问题177 ,当我写完这个题去看看有什么好的解题方式的时候,看见一个有趣的题解问题,他对这个题目的描述是几对情侣,带几个单身狗出去玩,然后现在我们要把这几个单身狗找出来,看了这个博主的题解,觉得太有意思了,然后今天把这个题写出来分享给大家。给的是一个接口型,我们只需要把函数实现就行,下面是我分别用C语言和C++实现的两种解题方法,原创 2024-03-20 22:04:36 · 192 阅读 · 0 评论 -
消失的数字【力扣】
解法二新建一个变量x,先让x与0到n之间的数异或,在遍历一下数组与数组中的元素异或,就可以找到缺失的数,原理任何一个数与0异或两次得到的都是他本身0,异或一次得到与它异或一次的元素。的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?解法一先从0到n把所有的数加起来,遍历数组减去数组中的元素,就可以找到缺失的数。......原创 2022-07-19 19:26:12 · 111 阅读 · 1 评论 -
原地移除数组中的元素【力扣】
利用双指针来控制数组中的元素,同时建一个循坏来删除与val相等的元素。最后返回dst指针即可。原地移除数组中所有的元素。原创 2022-07-19 18:35:36 · 216 阅读 · 0 评论