自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第16天|二叉树part 04

如果加入非空节点那么说明还有下层,此层就不是最后一层,flag=false。若左不为空:count减左节点的值,递归遍历左孩子。如果左孩子遍历返回来的值是true,则左方向有符合题目要求的路径,那么就应该将这个true结果继续向上返回。,在这颗二叉树里只需要找到一条路径符合返回直接返回就可以,没有必要遍历所有的节点。如果到叶子节点,该数值减为0,那么沿此路的所有节点相加恰好等于target。它一定是最后一层得第一个节点。正向思考是:传入0,每遇到一个节点,就加val,看看是不是与target相等。

2024-07-18 23:41:03 631

原创 代码随想录第15天

主函数:先判断当前左右节点是否是平衡二叉树,如果都是则进入判断逻辑:左右节点高度差是否小于等于1?处理左节点:因为没有判断cur是否为空,这里就需要加上判断语句if(cur.left),遍历,左回溯。终止条件有一些不一样:找到叶子节点,就开始结束的处理逻辑,将结果放入result中。,这么写的话相当于把递归和回溯拆开了, 一个在花括号里,一个在花括号外。先获取左右节点信息,再返回当前节点,后序遍历,求高度差。单层循环条件:统计左右节点,返回左右节点之和+本节点。处理右节点:递归遍历,回溯。

2024-07-18 20:18:19 391

原创 代码随想录算法训练营第14天/优先掌握递归

节点才知道这里高度是1了,然后才能一层层回退,去算路上的每一层高度是多少,所以需要返回int类型的高度。反之,右子树为空,左子树不为空,最小深度是 1 + 左子树的深度。其中中序是不可以的:左支树反转,左右孩子反转,本应反转右支树,但实际此时的右支树是反转过的左支树。前序的话,你从根节点开始就知道这里深度是1,然后一层层推下去,你走到新一层就知道这一层深度是多少,这也是为什么函数返回类型是。所以,如果左子树为空,右子树不为空,说明最小深度是 1 + 右子树的深度。有两种遍历方式:递归遍历,层序遍历。

2024-07-17 21:17:42 524

原创 代码随想录算法训练营第13天|二叉树

1.打印前序遍历节点,参数传入ArrayList来存放结点数值,同时迭代的是每个节点,也无需返回值.顺序为中左右,当前结点值加入结果集,result.add(curNode..val)遍历右节点,preorder(curNode.right,result)遍历左结点,preorder(curNode.left,result)确定哪些参数递归过程需要处理——>递归函数中加上这个参数。明确递归的返回值是什么——>确定递归函数的返回类型。栈溢出错误就是没写终止条件或者终止条件写的错误。根据这个模板,前序遍历。

2024-07-15 23:57:46 389

原创 代码随想录算法训练营第11天

定义单调队列,放进去窗口里的元素,随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面最大值是什么。push()规则:如果push元素大于入口处元素,那么就将队列入口处的元素弹出。这里的弹出不是将队列所有元素弹出。pop()规则:若窗口要移除的元素等于单调队列出口元素,则队列弹出元素,否则不做任何操作。将字符串转换为数字可以用Integer.valueOf(s)代替,不用自己写函数.移除元素等于出口元素的等价条件不是队列元素已满(queue.size()==k)我的实力不允许我挑战困难的题啊。

2024-07-13 23:07:57 219

原创 代码随想录算法训练营第10天|六分之一

基于数组实现的双端队列,数组是循环的,任何一点都可以被看作起点或者终点,这也意味着head——指向队首的第一个有效元素,其下标可能小于tail——指向第一个可以插入元素的空位。入队列只需入栈即可,出队列,若输出栈不为空,则直接弹出元素,否则就需要输入栈元素全部弹出,再逐个压入输出栈中,再出队列。【若输出栈不为空,则直接弹出元素,否则就需要输入栈元素全部弹出,再逐个压入输出栈中】这部分功能在pop()和peek()中复用,所以抽象出一个函数,不要复制粘贴。换个写法就是栈空或者元素不匹配就入栈,否则就出栈。

2024-07-12 23:14:31 871

原创 代码随想录算法训练营第9天

' ')//如果当前字符不为空或者已追加新单词后没有空格。如果时间复杂度为O(n)的话,新new StringBuilder sb追加加字符即可。定义双端队列,右端出n个元素加入到左端。再反转局部:[0,n-1],变成 fg edcba;先去除空格,再将整个字符串反转,再将单个单词反转。或者先将整个字符串反转,分别将子字符串反转回来。KMP留到以后补吧,今天就暂且不看了。使用split函数然后倒序相加。先反转整体"gfedcba",

2024-07-11 22:17:24 333

原创 代码随想录算法训练营第8天

计数count = 1 时,反转数组下标为[2k*count, 2k*count +k -1]即[4,5]同样,如果反转前k个字母,起点为i,下一段起点为i+k,两端起点相隔k个单位。if(k<=rest余数<2k) 反转数组下标为[2k*count,2k*count+k-1]案例”nums = 11 k = 2 反转下标[0,1] [4,5] [8,9]计数count = 0 时,反转数组下标为 [0,0+k-1]即 [0,1]在遍历字符串的过程中,让 i += (2*k),i每次移动2*k。

2024-07-10 18:36:36 351

原创 代码随想录算法训练营第7天

剪枝的逻辑不能是nums[i]>0,因为此时目标是target,而target可能是负数,排序之后的数组可以是越加越小,即target = -5, nums = [-4,-1,0,0]。遍历数组num1,num2,计算其和出现的数量,放入map集合中,键为和,值为出现的次数。若相加之和>0,则right--,相加之和<0,left++,相加之和 = 0,则加入结果集。每次对第一个元素不做判断,所以第二层循环去重时j>i+1&&nums[j]==nums[j-1],而不应当惯性思维是j>0。

2024-07-09 23:35:34 914

原创 代码随想录训练营第6天|哈希01

遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!

2024-07-08 19:51:49 901

原创 代码随想录算法训练营第4天|LeetCode24,19,02,07,142

cur的定义一定是要预备交换的一对结点的前一个结点,也就是已经交换完结的一对结点之中的第二个结点。第二遍指针初始时,链表到达尾部,往回遍历,当i = n+1时,指针恰好等于要删除结点的前一个结点,删除结点。慢指针一次走一个结点,快指针一次走两个结点,快指针相对慢指针一个结点一个结点的追赶,所以总会有一次相遇。当n = 1 时,只需要设置起始点指针和相遇点指针同时往前走,相等时即是程序入口,因为x = z。假设快指针和慢指针相遇,其中慢指针一定会在尚未走完的第一圈,而快指针可能已经转了好几圈。

2024-07-06 18:50:46 492

原创 代码随想录算法训练营第3天|LeetCode

用两个参数的构造器new dummyNode,即 ListNode dummyNode = new ListNode(-1,head),既新建结点,又完成赋值。只能感觉是理解会了,用递归法优化了两个指针一同向前移动的技巧。在链表前设置个虚拟头结点,那么删除第一个结点就和普通结点一样,最后返回虚拟头结点的next结点即可。cur = cur.next提到if-else判断逻辑外面,不管怎么样,每次cur都是要往前走的。删除结点语句是prev.next = cur.next,画个图就明白了。

2024-07-05 19:25:08 341

原创 代码随想录算法训练营第2天|LeetCode977,209,59

有序数组 [ -5 -3 1 3 5] 按从小到大排列,其平方之后两边一定是最大的,中间一定是最小的,所以定义双头指针,每次筛选出最大值,从新数组result的最大索引处填入。不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)1.关于中心元素处理:其实可以在初始化res矩阵的时候就直接把全部元素初始化为n*n,这样即使n是奇数,也无需处理中间的元素。

2024-07-04 21:52:41 499

原创 代码随想录算符训练营第1天|LeetCode704二分查找,LeetCode27移除元素

左闭右闭[ left , right ],左闭右开[ left , right )

2024-07-03 16:20:11 763

原创 CS西电高悦计网课设——校园网设计

所有主机可以访问外网主机可以通过域名访问Web服务器为网络配置静态或者动态路由图书馆主机通过DHCP自动获取IP参数为办公楼划分VLAN为所有设备分配合适的IP地址和子网掩码,IP地址的第二个字节使用学号的后两位。

2024-05-24 21:16:57 3495 1

原创 尚硅谷数据库|视图/存储过程与函数/流程控制

定义条件就是给错误码命名#举例1:定义“Field_Not_Be_NULL”错误名与MySQL中违反非空约束的错误类型是“ERROR 1048 (23000)”对应。#方式1:使用MySQL_error_code#方式2:使用sqlstate_value#举例2:定义"ERROR 1148(42000)"错误,名称为command_not_allowed。#方法1:捕获sqlstate_value#方法2:捕获mysql_error_value#方法3:先定义条件,再调用。

2024-03-20 00:01:48 730

原创 尚硅谷SQL|数据库的创建,修改与删除

创建数据库--->确认字段--->创建数据表---->插入数据。

2024-03-17 00:05:18 1790 1

原创 尚硅谷|聚合函数

在MySQL函数中聚合函数无法嵌套使用需求:查询平均工资最低的工资不能直接写SELECT MIN(AVG(salary))方式1:count(*)查看表中共多少个记录方式2:count(1)方式3:count(employee_id):括号内填具体字段,可能会出错,这个字段可能会包含NULL、而count()函数不会计算空值。效率分析——>MyISAM存储引擎,都是O(1),InnoDB存储引擎,COUNT(*)>COUNT(1)>COUNT(具体字段)

2024-03-12 23:55:29 720

原创 尚硅谷|基本的SELECT语句/运算符/排序与分页/多表查询

DD(defination)L:创建create/修改Alter/删除Drop/重命名Raname/清空TruncateDM(Manipulation)L:添加记录Insert/删除记录Delate/修改记录Update/DC(Control)L:提交Commit/撤销Rollback/保存点Savepoint/赋予权限Grant/回收权限Revoke。

2024-03-09 23:31:35 843

原创 操作系统概述

1.操作系统式系统资源的管理者2.以提供给用户和其它软件方便的接口和环境,向上层提供服务直接给用户使用的:GUI图形化界面命令接口:联机命令接口(交互式,说一句做一句),脱机命令接口(一次性处理一堆请求)给软件/程序员使用的:程序接口,即系统调用,用户通过程序间接使用。3.是计算机系统中最基本的系统软件ps:操作系统无序提供高级程序设计语言的编译器,编译器是os的上层软件。

2024-03-07 21:09:37 716

原创 尚硅谷|JDK新特性

首先提供只有一个抽象方法的接口(函数式接口),这个可以自己定义,或者JDK8中国声明在java.util.function包下的函数式接口Lamada表达式案例。

2024-03-05 23:47:06 563 1

原创 关于IDEA项目导入问题

自己在打开尚硅谷老师文件代码时,这样直接打开,会碰到这个异常:Package name does not correspond to the file path.java文件下标会变红类似这样。File->project structure ->modules->点击左上方+号将所有包模块导入就行。目前不知道原理,感觉很笨,回头找到更好方法再来填坑。

2024-03-02 22:57:06 456

原创 尚硅谷|反射机制

1.调用类中结构,使用反射和不反射有什么区别?不使用反射,需要考虑封装性,出类后不能使用私有结构。使用反射,可以调用运行时类只能任意的构造器等(包括私有的)2.反射体现动态性,可以在运行时动态所属的类,动态地调用方法,设计框架时会大量使用反射框架=注解+反射+设计模式3.可以通过反射创建单例模式类的多个对象4.封装性体现的是是否建议调用的问题,反射体现的是能否调用的问题。

2024-03-02 12:59:19 363

原创 尚硅谷|File类与IO流

File类位于java.io包下,File类的一个对象对应操作系统下一个文件或一个文件目录。

2024-02-29 21:11:09 581 1

原创 尚硅谷|集合框架&&泛型&&数据结构源码

Java集合框架体系:Collection:存储一个一个数据List:存储有序的,可重复的Set:无序,不可重复Map:存储一对一对数据。

2024-02-27 22:59:41 249

原创 尚硅谷|常用类与基础API

字符串常量都存储在字符串常量池中,池中不允许存放两个相同的字符串常量,jdk7之后存放在堆String不可变的特性:>对字符串变量重新赋值时会新开辟一个位置>对字符串修改时会新开辟位置这里实际上new了两份对象,一个是堆空间中new的对象,一个是在字符串常量池中生成的字面量,只不过其中value属性值都指向常量池”Hello"的地址值。

2024-02-25 22:53:07 881

原创 尚硅谷|异常处理&多线程

需求:通过异常名称直接判别异常原因,因此自定义通常继承于现有的异常体系RuntimeException\Exception。

2024-02-23 22:42:16 661 1

原创 尚硅谷|Java高级

1.按照声明位置分类变量:>成员变量:静态变量,类变量;非静态变量,实例变量;>局部变量:方法内,形参;2.对比静态变量和实例变量:1.个数:静态变量在内存中只有一份,被多个对象所共享类的每个对象在内存中都保存一份实例变量、 2.静态变量随着类的加载而加载,实例变量随着对象的创建而创建3.静态变量可以被类和对象调用,实例变量只能被对象调用3.static修饰方法随着类的加载而加载,可以直接被类调用静态方法不可以调用非静态的属性和方法。

2024-02-21 21:39:59 272

原创 尚硅谷|Java进阶

this理解为当前正在创建的对象(构造器),调用对象(方法,属性)this(参数列表)调用其它构造器,该语句必须声明在首行空指针异常:在Bank类中只声明了Customer数组但是并没有new实例对象,所以在BankTest中调用方法添加对象时报空指针异常。内存结构: 对象bank压入栈,但是栈中customers没有指针,所以无法添加对象。解决办法:在构造器中开辟空间。

2024-02-20 23:32:46 181

原创 尚硅谷|Java基础

内存存储;一旦初始化长度就确定;有序,精密排列,可重复;程序中的容器:数组,集合框架。

2024-02-20 19:45:50 975 1

原创 《算法通关村第二关——终于学会链表反转了》

链表反转的关键点在于:首先要拿到头结点,反转next指针。

2023-11-10 00:05:50 65 1

原创 《算法通关村——队列问题解析》

队列的特点就是先入先出FIFO(First in first out)先进先出。

2023-11-02 19:46:35 59

原创 《算法通关村——如何使用中序和后序来恢复一颗二叉树》

最终到这里就结束啦,刚开始会觉得很难,这啥玩意儿啊,做两遍之后上手就特别快啦。向着理想的生活!前进!

2023-11-01 19:04:13 533 1

原创 《算法通关村——如何基于数组(或者链表)实现栈》

且用数电老师的话激励自己:学习的痛苦是暂时的,未学习的痛苦是终生的。人始终要和自己作斗争。

2023-11-01 16:07:13 475 1

原创 《算法通关村——双指针的妙用》

问题描述:LeetCode26给你一个有序数组nums,请你原地删除重复出现的元素,使得每个元素只出现一次,返回删除后数组的新长度。要求:不要使用额外的数组空间,你必须在原地修改输入数组,并在使用O(1)额外空间的条件下完成算法:首先我想到的是快慢双指针,slow指向有效数组,fast负责遍历而且因为新数组的元素小于原始数组,直接用新的数覆盖掉重复数字即可比如原来是【2 2 3】,当fast指向3时和slow-1的值不一致,直接用3覆盖掉2/,就不用另外设置新数组。

2023-10-27 00:29:51 419 1

原创 面试通关村——不简单的数组增删改查

/左闭右开区间,实际上执行size次,由于size从1开始,i=0时,指向第一个元素,i=size-1,即i<size时,指向最后一个元素。//如果在i和i+1的位置出现了nums[i]>nums[i+1],而另外一个地方出现了nums[j]<nums[j+1],则说明不单调。//这里可以想一下最后一个元素后移,这个元素作为最后的数,原来下标为size-1(size从1计数,始终比下标多1)// 那么新下标就是size,结合arr[j]=arr[j-1],所以你j最大为最后一个元素的下标size.

2023-10-25 16:26:19 434 1

原创 编程导航通关算法村第一关|白银挑战

题目:剑指offer52:输入两个链表,找到它们的第一个公共节点。例如下面的两个链表:两个链表的头结点已知,相交之后成为一个单链表,但是相交的位置不知,并且相交之前的结点数也是为止的,请设计算法找到两个链表的合并点。分析:首先链表的特点在于可以有多个前驱,但是只能有一个后继,这样设计是为了保证链表的顺序性。所以重合滞后只能形成一个单链表。无思路先遍历常用数据结构和算法。常用数据结构有链表,数组,队,栈,集合等,常用算法有查找,排序,双指针等。目前只学了链表,队,栈。

2023-10-19 19:26:19 862

原创 编程导航通关村算法第一关|青铜教程学习

版本3:tagListNode是标签名,要用struct tagListNode结合申请变量;ListNode是别名,可以直接声请变量;版本1:这样定义,struct LinkNode合在一起才能作为结构体类型,从而声明变量。首元结点:是指链表中存储第一个数据元素a1的结点。头结点:是在链表的首元结点之前附设的一个结点。版本2:可以直接用LinkNode声明变量。2)关于头指针,头结点和首元结点的关系。头指针:是指向链表中第一个结点的指针。这样写规避了首部,中部和尾部三种讨论情况。画了一个挺搓蛋的图~~~

2023-10-16 19:02:01 825 1

原创 打印金字塔【xdoj】

逐渐深入解”打印金字塔“

2023-02-18 11:51:48 1986

原创 仅当显示请求注释处理时才接受类名称

为什么编译需要后缀名.java,而运行不需要后缀名.class

2023-02-16 16:51:03 3801 2

CS西电高悦计网课设-校园网设计

校园网源文件

2024-06-26

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

TA关注的人

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