- 博客(66)
- 收藏
- 关注
原创 [代码随想录27贪心]贪心的基础
贪心的核心思路就是:通过局部最优去推全局最优,并且我们的局部最优是可行的,列举不出反例去推翻它。贪心的核心思路就是,以小见大,局部最优推到全局最优,不能被推翻。
2024-12-29 07:34:54
276
原创 [代码随想录24回溯]子集和复原ip地址
这篇是关于回溯的子集问题,分割问题主要是上篇的一个子串划分和这篇的复原ip两个题目,回溯还是老套路了。void backtracking(参数) {if (终止条件) {存放结果;return;for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表);// 递归回溯,撤销处理结果。
2024-12-28 01:45:03
336
原创 [代码随想录21回溯]组合问题,电话号码的字母组合问题
回溯的提出是解决循环问题,回溯的提出就是为了解决排列和组合问题,以及多层遍历问题,因为如果遍历的层数越多我们的效率就会越低,回溯加上剪枝能很好解决这个问题。
2024-12-19 23:30:08
185
原创 [代码随想录20二叉树]二叉树的公共祖先问题
二叉树的公共祖先都是老朋友了,但是搜索二叉树的题目,相对于简单一点,因为他本身是有序的,所以我们需要函数自己参数去递归或者迭代,也可以通过新建函数去递归,通过两个父子指针去迭代。
2024-12-17 22:31:40
312
原创 [代码随想录17]二叉树之最大二叉树、合并二叉树、二搜索树中的搜索、验证二叉搜索树。
二叉树的题目还是要会一流程构造函数之类的。其中还有回溯的思想。
2024-12-15 23:06:56
332
原创 [代码随想录16]二叉树的重新构造,路径总和,左下角的值
关于二叉树的题目,我认为主要是把基础的思想掌握了,剩下的还是拼装和组合的题目,我们重要的就是学会一些基本的二叉思路,递归好还是迭代好,怎么递归和怎么迭代,二叉树的题目在面试过程中考的是挺多的,因为实际开发场景也会用到。
2024-12-13 23:27:22
283
原创 [代码随想录15]二叉树的所有路径,平衡二叉树,左叶子之和,完全二叉树-递归版本
二叉树的接下来的题目,会有所提高,还是考察二叉树的性质!以及递归和迭代的思路。
2024-12-12 23:23:46
357
原创 [代码随想录14]二叉树的属性,翻转,对称,最大深度和最小深度
在二叉树的题目中,递归的解法无疑是是最简单和最好理解的,也能快速解题,本篇介绍一下递归的常见的二叉树题目。
2024-12-11 23:34:26
263
原创 [代码随想录13]二叉树的基本结构,递归法和迭代法,同意迭代,层序遍历
什么是二叉树?类比于生活中的大树小树,但是他只能有两个分叉,所以我们就有两种特殊情况满二叉树和完全二叉树,顾名思义,满二叉树就是树枝都长满了,完全二叉树就是按照顺序来叶子结点还差一点,接着,对于“长的好的”树形结构(有序的二叉树,左边节点都小于右边节点),成为二叉搜索树,俗称SB树,有序的目的就是为了查找的效率提升,但是我们查找数据是查找二叉树的高度次对高度严格平衡的,左右子树相差一个高度的成为平衡二叉搜索树,AVL树,但是这个太严格了,花费很多时间在旋转调节上,我们又提出了红黑树,达到相对平衡的效果。
2024-12-10 23:29:58
454
原创 [代码随想录11]栈和队列的应用,逆波兰表达式求值 、滑动窗口最大值、前 K 个高频元素
具体来说就是,计算机并不知道计算逻辑的优先级(括号的优先级),但是他能找到一个括号最先匹配的,,主要是考察思路和coding能力,在前面几道题目的基础上进行延伸的。,这样两个问题都能得到解决,足以可见逆波兰表达式(后缀表达式的腻害之处)。使用优先级队列,哈希表统计数据,压入数据,然后遍历出数据。tips:注意除法运算和减法的顺序第一次写错了,哈哈哈。,有什么方法可以跳过这些呢?就是后缀表达式,我们让。这个题目比较简单一点,同时保持队列是递减的就行。这门课程中学到,逆波兰表达式,俗称。一、逆波兰表达式求值。
2024-12-08 23:18:57
361
原创 [代码随想录10]栈和队列
栈和队列在STL中扮演的什么角色呢?容器,适配器,算法,迭代器,空间配置器,仿函数,而我们今天要学的栈和队列就是属于适配器里面的,为什么栈和队列符合适配器呢?因为他们两的实现可以依赖于底层的数据结构容器而生的,也就是栈可以用vector或者List或者其他容器实现。按照自己的需求去选取。
2024-12-07 23:18:00
431
原创 [代码随想录08]字符串反转类型和字符串替换
对于字符串操作,最常用的还是双指针去遍历移动字符串,同时设计一些交换操作,我们可以通过库函数去学习很多字符串的操作,达到训练的目的。
2024-12-05 07:30:39
343
原创 [代码随想录07]哈希表的进阶巧妙操作,四数相加,赎金信,三数之和
哈希表的主要用法就是去重,牺牲空间建立索引去直接查找一个数!,希望兄弟们在接着刷题的过程中,能结合前面的一些方法形成自己的做题技巧。
2024-12-04 19:10:28
270
原创 [代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
哈希表是什么?一句话带你理解,简单来说我们对于杂乱的数据,怎么快速找到数据,如何做呢?一般的做法就是遍历复杂度为o(N)去找寻一个数据,但是吧,我们这样思考的话,还是花了大量时间去检查其他元素是否存在这个集合里面,如何优化呢?我们通过特定的计算把每个值都用特定的值来唯一表示起来,我们每次查询只需要通过计算,然后看这个特定的结构里面是否有对应映射的值,这种情况下,我们的查询效率就能达到o(1),这个做法也就是前文提到的空间换时间。有了特定的索引值去表示,这个数据是否存在,那么就会存在。
2024-12-03 00:14:05
1012
原创 [代码随想录04]两两链表的交换、删除倒数第N个节点、链表相交、链表带环
链表+双指针:双指针就是用来处理题目问题的,无论是判断链表相交还是带环,归根到底我们学的还是数学知识,巧妙用数学知识让我们解题目的速度会更快。代码更优雅学会链表的中的一些数学思想有助于我们在理解链表的基础操作上,处理更加复杂的问题!。
2024-11-30 07:57:43
358
原创 [代码随想录03]链表操作移除元素、设计链表、反转链表
链表:链表主要是考基础操作多一点,基本的对链表进行增删查改,所以我们必须要熟悉链表的底层数据结构,题目二的设计链表就是最好的题目。tips:关于链表需要遍历的问题,尽量使用伪头结点去处理,因为遍历操作一般是通过当前节点去改下一个节点,头结点会处于尴尬的地方,需要我们单独处理,为了简化操作,我们可以定义一个伪头,然后统一逻辑处理。总结一下我们常见的链表操作,主要熟悉增删查改,我们在写链表题目的时候最好画一个图,先保存什么,在修改什么,容易混乱。增加。
2024-11-30 00:23:00
862
原创 [代码随想录02]数组长度最小的子数组、螺旋矩阵、区间和、开发商购买土地
滑动窗口他是双指针的兄弟,咱们可以理解为一种有条件的双指针,他的两个指针被创建出来就是为了执行一个任务,这个任务可能是统计指针间的元素之和,亦或者是达到某一个条件不能就得换一种操作执行,然后又换回来,类似与取数据和收数据,收满了就得取,取空了就得收。前缀和的思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。前缀和 在涉及计算区间和的问题时非常有用!本质上就是空间换时间的做法,这个类似的做法在二叉树的递归操作里面很常见。
2024-11-28 23:55:47
556
原创 [代码随想录算法01] 704. 二分查找、27. 移除元素、977有序数组的平方
数组相关的最常用的操作的就是二分,因为二分可以很明显的将O(N)的时间复杂度降到O(logN),所以在一些中等的题目里面,我们很容易看到进阶的操作里面有优化时间复杂度的做法。下一个常见的操作就是双指针,双指针对于有序的数组处理问题就是一绝,他可以通过,两个指针的快慢不同,直接将O(N^2)的暴力枚举,直接降低成O(2N),也就是两次遍历即可。
2024-11-28 00:45:26
443
原创 【C++复习】第三弹之继承和多态
继承和多态是C++语法设计的精髓,也是我们对代码进行优化,重构的好方法。继承主要是类层次的复用,多态就是不同对象的不同执行方法,在继承的前提下,对关系类的方法进行重写。
2024-10-27 23:52:27
212
原创 【C++复习】第二弹-内存管理
对于一个程序来说,我们必须知道他的各个位置的变量存放在哪里的,所以我们必须要清楚C++的内存分布。其实内存管理是衡量一个人代码逻辑的重要指标,一旦你掌握了内存,那么程序的运行逻辑在你的眼里就是透明的。下面通过看图和理解两个问题就能理解内存管理。
2024-10-27 21:17:47
362
原创 【C++复习】第一弹-基础性语法
学习了C++语法这么久了,我其实觉得,我们学习一门语言应该更加注重使用性,对于语法的细节可以通过具体的项目去重新造轮子的时候再去抠细节,也就是说你得学会先走,在去想我们如何走的,身体的哪些肌肉在发力,这些对于我们目前可以不用在意细节,结合实际来去记忆,这个才是高效可取的,今天的前言唠叨就到这人呀!如果你有兴趣,就接下来看下面的几个问题。
2024-10-26 00:56:53
650
原创 [项目]搭建一个HTTP_SERVER
聚焦于处理HTTP的请求和构建对应响应;我们主要研究基于 HTTP/1.0 短连接 的GET和POST方法;获得请求,分析请求,错误处理等;制定特定的网页src用于返回;引入简单的日志系统搭建CGI机制;父子管道,设计dup2重定向,环境变量传参等引入线程池;采用多线程技术,缓解内存开销.
2024-08-03 17:16:56
505
原创 【C++11】右值引用和左值引用
① 自定义支持->重写构造函数,一般是直接有的可以直接 调用② 容器->C++11引入initializer_list,初始化列表,底层逻辑是迭代器加push_back支持。public:// ...//这里跟迭代器加尾插的思想一样private:T* _array;
2024-05-21 17:39:03
455
原创 刷力扣看见一个寻找单身狗的问题?【力扣题解】
今天刷力扣遇到一道有意思的题目,题目是写着撞色问题177 ,当我写完这个题去看看有什么好的解题方式的时候,看见一个有趣的题解问题,他对这个题目的描述是几对情侣,带几个单身狗出去玩,然后现在我们要把这几个单身狗找出来,看了这个博主的题解,觉得太有意思了,然后今天把这个题写出来分享给大家。给的是一个接口型,我们只需要把函数实现就行,下面是我分别用C语言和C++实现的两种解题方法,
2024-03-20 22:04:36
188
原创 浮点型数据在内存中到底是怎么存储的呀?【数据存储】
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。M表示有效数字,大于等于1,小于2。2^E表示指数位。简单来说:S表示正负浮点数,E代表指数,M代表浮点数的有效值(注意E、M)的表示遵循一种类似于科学计算法的表示方法。
2024-03-19 21:59:21
870
原创 烫烫烫VS屯屯屯,为什么我们再编程中会遇到一些奇怪的中文汉字呢?【函数的栈帧】
当我们上网查询的时候,我们会发现网上用了一句简单的话来概括:在VC 的debug模式下,,这时打印出来分别对应烫和屯,我们来下面一个代码来验证一下这个现象。
2024-03-19 08:02:18
435
1
原创 Xshell中vim插入模式中没有正常退出,再次进入会报错,怎么解决?
Swap file ".test.c.swp" already exists![O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
2023-10-18 16:22:46
453
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人