自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 DAY22 二叉树9

在。

2023-07-22 19:42:26 97

原创 DAY21 二叉树8

(可以与236.二叉树的最近公共祖先进行对比)给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。

2023-07-22 19:40:38 81

原创 DAY24 回溯2

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]

2023-07-22 19:38:39 94

原创 DAY23 回溯1

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。组合问题是回溯法解决的经典问题,我们开始的时候给大家列举一个很形象的例子,就是n为100,k为50的话,直接想法就需要50层for循环。从而引出了回溯法就是解决这种k层for循环嵌套的问题。

2023-07-22 19:37:55 65

原创 DAY20 二叉树7

遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。

2023-07-18 15:50:42 24

原创 DAY19 二叉树6

因为是传入了两个树,那么就有两个树遍历的节点t1 和 t2,如果t1 == NULL 了,两个树合并就应该是 t2 了(如果t2也为NULL也无所谓,合并之后就是NULL)。//t2的左右节点为NULL时,新树(经过操作后的t1)的对应结点的值就是t1的节点值,所以树t1的对应结点不变就行。那么应该定义一个新的节点,并把这个数组的数值赋给新的节点,然后返回这个节点。其实本题是同样的道理,我们在寻找一个不符合条件的节点,如果没有找到这个节点就遍历了整个树,如果找到不符合的节点了,立刻返回。

2023-07-17 10:48:48 26

原创 DAY18 二叉树5

找到。

2023-07-15 11:50:26 30

原创 DAY17 二叉树4

这道题目要求左叶子之和,其实是比较绕的,因为不能判断本节点是不是左叶子节点。此时就要通过节点的父节点来判断其左孩子是不是左叶子了。平时我们解二叉树的题目时,已经习惯了通过节点的左右孩子判断本节点的属性,而本题我们要通过节点的父节点判断本节点的属性。——》通过这道题目,可以扩展大家对二叉树的解题思路。

2023-07-15 00:03:55 30

原创 DAY16

力扣题目链接(opens new window)给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3。tip:二叉树中每一个结点都有自己的深度和高度。二叉树的深度:二叉树中任意节点到根节点的距离(记住这个定义,很重要,不理解深度都是因为没有记住这个的定义;深度这个东西不需要你去理解,你只要记住定义就可以)。二叉树的高度:二叉树中任意结点到叶子节点的

2023-07-13 17:02:38 20

原创 DAY15 二叉树2

(要点1,也是我烦的点)针对二叉树的问题,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。二叉树解题的大忌就是自己稀里糊涂的过了(因为这道题相对简单),但是也不知道自己是怎么遍历的。这也是造成了二叉树的题目“一看就会,一写就废”的原因。针对翻转二叉树,我给出了一种递归,三种迭代(两种模拟深度优先遍历,一种层序遍历)的写法,都是之前我们讲过的写法,融汇贯通一下而已。大家一定也有自己的解法,但一定要成方法论,这样才能通用,才能举一反三。

2023-07-12 17:36:36 34

原创 DAY14 二叉树01

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。C++代码如下:int val;大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。这里要提醒大家要注意二叉树节点定义的书写方式。在现场面试的时候 面试官可能要求手写代码,所以数据结构的定义以及简单逻辑的代码一定要锻炼白纸写出来。

2023-07-12 13:14:03 28 1

原创 逻辑漏洞小总结

1、找到关键的数据包可能一个支付操作有三四个数据包,我们要对数据包进行挑选。2、分析数据包支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。3、不按套路出牌多去想想开发者没有想到的地方。4、pc端尝试过,手机端wap也看看,app也试试防御方法1、在后端检查订单的每一个值,包括支付状态;2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量;

2023-07-10 21:46:20 3310 1

原创 SQL注入渗透与防御

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。web应用程序:移动端的app或PC端的网站网页。

2023-07-10 21:43:53 1739 1

原创 DAY13 栈与队列3

上面2道队列相关的题目,最大的难点就是找到“单调队列”和“优先级队列”这两种数据结构来解决两个题目中大小为k的窗口的问题。我们用栈实现队列,用队列实现栈来掌握的栈与队列的基本操作。接着,通过括号匹配问题、字符串去重问题、逆波兰表达式问题来系统讲解了栈在系统中的应用,以及使用技巧。通过求滑动窗口最大值,以及前K个高频元素介绍了两种队列:单调队列和优先级队列,这是特殊场景解决问题的利器,是一定要掌握的。栈里面的元素在内存中是连续分布的么?

2023-07-10 20:53:19 33 1

原创 DAY10 栈与队列2

为()、[]、{}各自定义一个变量count1、count2、count3来记录。每当遇到一个左括号的时候,count1++;每遇到一个右括号时,count1--;最后看count1、2、3的值是否都为0;都为0则代表字符串有效,有一个不为0则代表字符串无效;——》当时思考的时候我没有想到为什么非得用“栈”,后来看答案的时候发现。首先要弄清楚,字符串里的括号不匹配有几种情况。,如果不在动手之前分析好,写出的代码也会有很多问题。

2023-07-09 09:44:51 22 1

原创 DAY9 栈与队列1

一、我们使用的stack是属于哪个版本的STL?C++标准库是有多个版本的,要知道我们使用的STL是哪个版本,才能知道对应的栈和队列的实现原理。那么来介绍一下,三个最为普遍的STL版本:HP STL 其他版本的C++ STL,一般是以HP STL为蓝本实现出来的,HP STL是C++ STL的第一个实现版本,而且开放源代码。P.J.Plauger STL 由P.J.Plauger参照HP STL实现出来的,被Visual C++编译器所采用,不是开源的。SGI STL 由Silicon Graphics C

2023-07-08 20:40:45 25 1

原创 DAY8 字符串2

说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP。写过KMP的同学,一定都写过next数组,那么这个next数组究竟是个啥呢?next数组就是一个前缀表(prefix table)。前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。

2023-07-08 07:56:03 48 1

原创 DAY7 字符串1

我的缺点:给数组扩容的方式有些遗忘——》其实看了卡子哥的思路的时候我觉得我有所遗忘,原因是以前用c语言写数据结构的时候,数组扩容就是申请一个更大的内存空间,如何把数组现有的数值复制进去,然后把原数组释放掉。发现是在接近中间部分的时候翻转结果不符合答案,所以我想应该是边界条件没有把握好——》然后发现for循环里面的结束条件应该是i>=1而不是i>=0(其实这个边界在我写的时候我也不确定,只是觉得应该先把思路写完再去判断边界,结果就忘记了——》以后写的时候不确定的地方要加注释!//手动给单词之间添加空格。

2023-07-06 16:26:19 63 1

原创 DAY6 哈希表2

2.我本来有个问题:对a去重不不理解,为什么只比较nums[i] == nums[i - 1],要是nums[i] == nums[i - 3]\nums[i] == nums[i - 4]的话怎么办呢?是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n2),四数之和的时间复杂度是O(n3)。

2023-07-05 22:20:21 33 1

原创 DAY5 哈希表1

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!

2023-07-04 17:25:12 51

原创 DAY4两两交换链表中的节点|

1.力扣上全部的链表题目都没有给我写上虚拟头节点,但是链表的题目定义虚拟头节点是很有必要的(会非常省事),所以最好自己在链表的题目中都首先定义一个虚拟头节点。

2023-07-04 01:01:05 42

原创 DAY3 203移除链表元素|707设计链表|206反转链表

但是需要考虑的情况还是较多的,但是使用虚拟节点可以规避很多问题——传入链表是否为空的问题和链表头节点是不是待删结点的问题。// 获取到第index个节点数值,如果index是非法数值直接返回-1, 注意index是从0开始的,第0个节点就是头结点。双指针的思路:因为链表是单向的,所以必须从头节点开始,那么要使得指针指向反过来,就只能将一前一后的两个链表结点的地址都记录下来。// 链表变为 1->2->3。// 在第index个节点之前插入一个新节点,例如index为0,那么新插入的节点为链表的新头节点。

2023-07-02 23:58:09 158 1

原创 DAY2二刷-力扣977.有序数组的平方|力扣209.长度最小的子数组|59.螺旋矩阵II

1.动态地申请数组空间:c语言:c++:使用new关键字或者vector2.二维数组的地址空间也是连续的。

2023-07-01 21:41:32 63

原创 sqlmap及其python依赖环境的安装

由于环境的不同,安装过程中可能会遇到各种各样的问题,不用慌,先根据错误提示搜索,多试一下。因为sqlmap是用python语言编写的,所以需要先安装python环境。因为只能在sqlmap目录下使用命令,为了方便在任何地方使用,添加环境变量。只需要双击这个快捷方式,就可以进入sqlmap路径使用sqlmap命令。这时候就可以在任何地方使用sqlmap命令,也不需要带py后缀了。如果sqlmap.py不行,就用python sqlmap.py。如果是win10,编辑Path的时候是新建变量,不需要分号分隔。

2023-04-08 11:33:24 1891 2

原创 数组总结--DAY2

移除元素、有序数组的平方都用到了双指针的思想。而这些使用双指针的题目都是可以用暴力的方式解决的——》所以以后如果一个数组题目可以用暴力解决,那么就接下去考虑一下用双指针能不能解决。相信大家有遇到过这种情况: 感觉题目的边界调节超多,一波接着一波的判断,找边界,拆了东墙补西墙,好不容易运行通过了,代码写的十分冗余,毫无章法,其实。双指针法(快慢指针法)在数组和链表的操作中是非常常见的。,其实这也是写程序中的重要原则。,就是单纯的模拟,十分考察大家。模拟类的题目在数组中很常见,

2023-04-06 23:32:49 24

原创 59.螺旋矩阵II---DAY2

思想:把一个大问题拆解成相似的小问题——》画螺旋矩阵的本质就是画一个个正方形。最后判断中间需不需要加上一个单独的值(非得要加上单独的只是因为loop=n除以2;就算把loop改成loop=n/2+1后,由于for循环里面都是j < startY + n - offset这种大于和小于的判断条件,而不是大于等于or小于等于,所以把loop改成n/2+1后也没有用)难点:小问题之间的连贯性和转化(也就是解决了外圈矩阵的绘制后,如何把解决外圈的这一套算法放到解决内圈矩阵的绘制中)

2023-04-06 23:15:00 37

原创 力扣209.长度最小的子数组--DAY2

滑动窗口是一种用于处理数组、字符串和链表的算法思想,它通常适用于需要计算连续、固定长度的元素序列的问题。本题的第一个难点在于对题目的理解,题目要求的是数组中长度最小的但是数组中所有值加起来大于target的子数组。总之,滑动窗口是一种非常有用的处理连续区间类问题的算法思想,可以有效地降低时间复杂度并提高代码的效率。:对于某些列举问题,如全排列、最小覆盖子串等问题,我们可能会使用哈希表形式的滑动窗口来解决。:将给定序列划分成大小固定且不重叠的区间,并对每个区间执行某些操作。:寻找给定数组或字符串中。

2023-04-06 23:13:40 58 1

原创 力扣977.有序数组的平方-DAY2

这题用指针的契合点:数组中所有数都平方后,最大的数肯定是从数组的两端开始寻找。

2023-04-06 23:12:21 32 1

原创 代码随想录算法训练营12期DAY1

如果选择了左闭右闭,那么书写代码的时候要贯彻始终,while中要写成<=才能代表区间的左闭右闭。又因为右端点是闭合的,所以当middle的值不等于target值的时候,我们下一段区间中不需要出现middle了,所以right就等于middle-1就行。如果选择了左闭右开,那么书写代码的时候也要贯彻始终,while中要写成<才能代表左闭右开的右开!因为右端点是开的,所以等middle的值不等于target时,我们取right=middle,但是实际上这个middle的值不会被包含在新区间内。

2023-04-06 09:11:55 31 1

转载 元宇宙初探

作为一个大二的学生一直总是听到元宇宙这个词但是一直不知道是什么,今天集中搜索了一下资料并且做好了笔记,分享给大家希望能够帮到和我一样的小白。(本人发表的内容有很多转载别的网站的东西,如果我有未标注的,请与我联系,我会立刻标注~)

2022-11-27 21:28:37 172

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除