自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【二叉树】前中后+层序遍历

本文解析了二叉树遍历的核心概念,重点阐述了前序、中序、后序遍历的区别在于访问节点的时机不同:前序在进入节点时访问,中序在左子树遍历后访问,后序在离开节点时访问。通过Java代码示例展示了中序遍历(LeetCode 94)和层序遍历(LeetCode 102)的实现方法。层序遍历使用队列按深度顺序处理节点,同时记录深度信息可用于解决相关问题。文章以图示和代码相结合的方式,清晰呈现了二叉树遍历的本质特征和实现逻辑。

2025-11-21 01:09:32 10

原创 【数组-矩阵】LeetCode hot100

对于 matrix[i][j],如果 matrix[i][0]=0 或者 matrix[0][j]=0,说明 i 行有 0,或者 j 列有 0,把 matrix[i][j] 变成 0。既然最后会单独修改第一行和第一列,那么在修改 matrix[i][j] 时,跳过第一行和第一列。这也避免了一个 bug:如果提前把 matrix[i][0] 变成 0,我们会误认为 i 行要全部变成 0。如果 i 行有 0,那么置 matrix[i][0]=0。如果 j 列有 0,那么置 matrix[0][j]=0。

2025-11-20 01:25:13 111

原创 【链表】LeetCode hot100+面试高频

本文总结了链表反转问题的三种经典解法:单链表反转、区间链表反转和K组链表反转。核心思路采用双指针技巧,通过暂存后继节点和修改引用方向实现反转。对于区间反转问题,使用哨兵节点处理边界情况;对于K组反转,先计算链表长度再分组处理。反转操作的关键在于正确连接反转后的头尾节点与剩余链表部分。时间复杂度均为O(n),空间复杂度为O(1),适用于各类链表反转场景。

2025-11-20 01:23:27 319

原创 【Java基础07】链表

Java的指针和C语言的有些区别。

2025-11-15 23:15:20 391

原创 【数组-普通数组】LeetCode hot100+高频面试题

然后遍历整个二维数组,如果当前区间的左端点不超过当前合并区间的右端点(也就是最后一个区间的右端点),那么说明有重叠,需要比较两个右端点的值取最大,如果当前区间的左端点超过了当前合并区间的右端点,那就说明没有重叠,直接添加。另外注意k要取余,len=8,k=10和len=8,k=2是一样的,因为k=8相当于又转回去了,所以取个余。注意排序代码,注意返回代码中List变Array的部分!

2025-11-12 01:26:43 206

原创 【前后缀】Leetcode hot 100

本文介绍了四道LeetCode算法题的解法总结。238题通过前后缀数组实现除自身外数组乘积;560题利用哈希表动态维护前缀和,统计和为K的子数组数量;121题采用贪心策略,寻找买卖股票的最佳时机;53题通过维护最小前缀和,求解最大子数组和。核心思路均围绕前缀和的高效计算与维护展开,强调遍历顺序对结果的影响,特别是121和53题中更新顺序(先计算结果再维护最小值)的关键作用。各解法时间复杂度和空间复杂度均为O(n)或更优。

2025-11-10 00:34:24 159

原创 【双指针(快慢指针、滑动窗口)】LeetCode hot 100

本文总结了双指针和滑动窗口算法在LeetCode典型题目中的应用。双指针技术通过左右指针的协同移动优化时间复杂度,如盛水容器问题通过谁矮谁移策略快速求解。滑动窗口则通过动态调整窗口边界寻找最优解,如最小子数组通过收缩左边界确定最短满足条件的子数组,无重复字符子串利用哈希表记录字符位置来维护窗口有效性。两种算法都能将O(n²)复杂度优化至O(n),关键是根据问题特点设计指针移动策略和窗口调整规则。典型实现包括前缀和预处理(接雨水)、快慢指针(移动零)等技巧。

2025-11-08 00:55:20 329

原创 【JavaWeb】Tlias后台管理系统

本文介绍了班级管理系统中班级列表查询和删除功能的实现细节。在分页查询中,使用PageHelper实现自动分页,并通过ClazzQueryParam封装请求参数,最后返回PageResult结构。删除功能通过@PathVariable接收路径参数,在Service层检查关联学生数量,若存在关联则抛出DeletionNotAllowedException自定义异常。同时展示了MyBatis的XML映射文件写法,包括条件查询、删除操作和关联计数查询,其中强调了分组查询的注意事项。文中还对比了@RequestPar

2025-11-07 23:39:35 1006

原创 【数组-双指针】Leetcode 15.三数之和 + LCR 006.两数之和II

【代码】【数组-双指针】Leetcode 15.三数之和 + LCR 006.两数之和II。

2025-11-05 00:51:58 323

原创 【哈希表】LeetCode hot 100

本文介绍了哈希表(Hash)的概念及其在Java中的实现方式。哈希是一种快速存储和查找数据的技术,通过哈希函数将数据转换为固定整数。Java中HashMap和HashSet分别实现了Map和Set接口,利用哈希技术实现高效操作(时间复杂度O(1))。Map存储键值对(键唯一),Set存储不重复元素。文章还分析了三个LeetCode题解,展示哈希表的实际应用,包括两数之和、字母异位词分组和最长连续序列问题,强调了键的选择原则和接口编程的优势。

2025-11-05 00:43:47 133

原创 nginx启动成功但是页面显示403forbidden

(2)我的前端工程多了一个以前没见过的目录html副本,不是全部直接在assets下面了,可能这样的话读取有点问题。(1)可能是因为端口占用。

2025-11-04 16:58:13 85

原创 【数组-二分查找】Leetcode 69.x的平方根

注意条件的写法,要么小于等于要么大于。本题属于二分中的求最大。

2025-11-04 01:13:42 232

原创 【数组】二分查找关于最大最小部分的理解

求符合某个条件的最小值,那么mid左边是不符合条件的,右边是符合条件的(如果左边符合条件那直接找最左边的就行,所以没必要),也就是符合mid的最小值。找最左边的最大值,循环之后返回的是right。【一点心得:如果写成小于,那么left左侧都是小于的,最后right在left左侧,也是小于的,就没办法找到正确的值。求符合某个条件的最大值,那么mid左边是符合条件的,右边是不符合条件的。因为条件是nums[mid]<target ,也就是求大于等于target的最小值,那么最后返回left即可。

2025-11-04 01:01:58 142

原创 【数组】Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

这里比较巧妙的是如何返回end的值,其实是利用了寻找第一个大于等于target+1的元素下标,再-1就是end的位置了。有序就可以考虑二分,利用left是第一个大于等于target的元素下标进行处理!

2025-11-03 00:52:59 154

原创 【数组】 Leetcode 35.搜索插入位置

注意left左边是小于,right右边是大于等于!

2025-11-02 17:06:03 235

原创 edas会议投稿显示格式错误+消除浮动块下面的空白

有的时候算法流程图在最上面,会导致报错:,会让LaTeX 将所有页面的顶部边距(topmargin)都增加 0.01in。但是要是差得多,肯定不好使。

2025-10-31 23:39:45 140

原创 【数组】 Leetcode 704. 二分查找(红蓝染色理解)

重点是红蓝染色。L-1始终是红色,R+1始终是蓝色。L会指向第一个大于等于target的下标!如果target>数组中的所有数,那么最后left是数组长度[需要单写]如果target<数组中的所有数,最后right会为-1,left会为0如果target不存在,最后left会会指向大于target的第一个值。right会指向小于target的第一个值,因为left-1始终是蓝色,right+1始终是红色如果target存在,那么最后left指向的就是target,因为最后R会刚好小于这个值。

2025-10-30 01:20:54 210

原创 【用homebrew配置nginx+配置前端项目与后端联调】Macbook M1(附一些homebrew操作)

本文介绍了Nginx安装、配置及前后端联调的全过程。主要内容包括:1) 通过brew安装Nginx时遇到SSL_set_quic_tls_cbs符号缺失问题,原因是OpenSSL版本过旧;2) 通过brew update和upgrade更新所有包解决问题;3) 配置前端项目在/opt/homebrew/var/www目录,并设置Nginx反向代理将8080端口前端请求转发至8081端口后端;4) 启动Nginx服务后,通过浏览器访问localhost:8080即可实现前后端联调。文中详细说明了配置语法和注意

2025-10-27 23:15:13 722

原创 Java小知识点

Java网络编程基于TCP/IP协议栈,提供TCP(ServerSocket/Socket)和UDP(DatagramSocket)两种通信模型。网络编程与I/O流密切相关,Socket封装了网络I/O操作。SpringBoot简化了网络编程,通过内置Tomcat服务器自动处理底层Socket通信和HTTP协议解析,开发者只需专注于业务逻辑(如@RestController方法)。HTTP是应用层协议,运行在TCP传输层之上,Tomcat作为"HTTP over TCP"的实现,将网络通信分层封装。整个过程

2025-10-22 16:24:46 750

原创 【JavaWeb01】Web介绍

本文介绍了Web开发的基本工作流程和前后端分离开发模式。首先通过图示展示了浏览器请求前端服务器获取页面代码,并由浏览器引擎解析展示页面的过程。随后详细说明了前端代码如何通过指定接口访问后端Java程序获取数据库数据,并将数据填充到前端页面的完整交互流程。最后简要提及了前后端分离开发的概念。全文通过流程图解清晰地呈现了Web应用程序从请求到展示的全生命周期。

2025-09-10 20:52:06 367 1

原创 Java注意事项

本文总结了Java编程中的几个关键知识点: 字符串与字符的区别:'0'是字符(ASCII 48),"0"是字符串;字符串拼接与字符运算规则不同。 类调用规则:同一包内的类无需导入即可直接使用。 命名规范:变量名不能以数字开头,可通过添加前缀解决。 项目结构建议:推荐在src模块下创建包。 类文件命名:public修饰的类需与文件名一致。 泛型使用注意:ArrayList泛型需明确指定目标类避免冲突。 标准描述格式:类声明应规范标注继承和接口实现关系。 (注:包含字符串工具StringBu

2025-09-07 21:45:08 328

原创 Jetbrains系列IDE编程快捷方式

本文整理了JetBrains系列IDE的实用快捷键技巧,主要包括: 代码环绕生成(Ctrl+Alt+T/Win,⌘+Option+T/Mac) 快速生成for循环(fori+Tab) 变量拆分(Alt+回车) 纵向选择删除(Alt/Option+拖动) 快速生成构造方法/getter/setter(⌘+N) 方法快速创建(Option+回车) 注释快捷键(⌘+/单行,⌘+Shift+/多行) 代码复制移动(⌘+D/⌘+Option+↓) 返回值变量自动生成(Option+⌘+V) 其他实用技巧包括参数提示(

2025-09-07 21:44:44 1131

原创 【Java基础07】面向对象进阶

本文摘要介绍了Java面向对象编程中的static关键字和继承概念。主要内容包括:1)static修饰符的特点和调用方式,用于修饰成员变量和方法,实现类级别共享;2)工具类的创建和使用,强调构造方法私有化;3)继承的优缺点及适用场景,当类之间存在共性且满足"子类是父类一种"时使用;4)继承的三大特点:单继承、不支持多继承、支持多层继承。通过学生类、数组工具类和动物类继承体系等代码示例,演示了static和继承的具体应用。

2025-09-07 15:18:59 665

原创 【Java基础06】ArrayList

本文介绍了Java集合框架中的ArrayList基础用法,主要包括:1) ArrayList的基本概念和创建方法;2) 常用的增删改查成员方法;3) 集合遍历的两种实现方式;4) 基本数据类型对应的包装类;5) 通过练习演示如何存储和遍历自定义对象。文章还提供了键盘录入学生信息并存入集合的实例代码,展示了ArrayList在实际开发中的应用场景。

2025-07-24 16:19:49 456

原创 【Java基础03】Java变量2

本文介绍了Java中的基本数据类型和引用数据类型。基本数据类型包括整数(byte,short,int,long)、浮点数(float,double)、字符(char)和布尔(boolean),详细说明了各类型的内存占用和取值范围。引用数据类型包括类、接口、数组等,重点讲解了数组的定义、静态初始化(直接指定元素)、动态初始化(指定长度)以及元素访问和遍历方法。文章还对比了Java引用与C/C++指针的区别,强调Java数组是引用类型,通过地址访问存储在堆中的数据。最后总结了数组两种初始化方式的区别:静态初始化

2025-07-21 23:45:47 915

原创 【Java基础05】面向对象01

本文部分参考。

2025-05-31 20:22:16 936

原创 【Java基础04】方法

方法(method)是程序中最小的执行单元。将重复的代码打包,避免重复度过高,复用性差。方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用public static 返回值类型 方法名(参数) {方法体;return 返回值;

2025-05-31 02:34:13 429

原创 【Qt】Macbook M1下载安装

macOS 原生提供的编译器和工具链是通过 Xcode提供的,这些工具包括 clang 编译器、make 和其他开发工具。本博客所写的教程有一定的问题,因为我在官网下载后发现有一些所需的包是没有的,不知道哪步出了问题,所以最后是使用brew下载的,参考本篇博客的话需要谨慎!我的Qt Creator这个应用程序下载到安装目录了,为了使用方便,我把它从安装目录拖动到Applications文件夹了。按需求选择自己需要的组件就可以,注意Qt的版本我这里选得不对,应该是macOS(universal)版。

2024-11-08 21:33:54 1559

原创 【Java基础_02】Java变量

【Java基础_02】Java变量、运算符、程序控制结构。

2024-02-04 22:46:55 1108

原创 【Java基础_01】Java运行机制及运行过程

/ 对该java文件进行编译->生成test1.class文件1.有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件。2.在该源文件目录下,通过javac编译工具对test1.java文件进行编译。3.如果程序没有错误,没有任何提示,但在当前目录下会生成一个test1.class文件,该文件被称为字节码文件,也是可以执行的java程序。java test1//运行class文件,写指令时不用加class,因为直接执行test1这个类。

2024-01-17 21:35:40 1952 1

原创 【PyTorch深度学习实践】09_卷积神经网络基础

这里有个描述很重要:想要使源图像(1,1)的位置作为第一个与kernel中心重合,参与计算的像素,想想看padding需要扩充多少层,这样就很好计算了。padding是为了让源图像最外一圈或多圈像素(取决于kernel的尺寸),能够被卷积核中心取到。stride操作指的是每次kernel窗口滑动的步长,默认值是1。

2023-01-15 22:26:15 743

原创 【PyTorch深度学习实践】08_Softmax分类器(多分类)

当需要多分类的时候,会输出一个分布,这些分布需要满足`P(y = i) >=0 和 所有的P值加起来=1`,使用softmax可以实现。

2023-01-15 20:44:52 5147 4

原创 【PyTorch深度学习实践】07_Dataset和Dataloader

绝大多数时候需要以 batch 的形式访问数据集。Dataloader 这个接口提供了这样的功能,它能够基于我们自定义的数据集将其转换成一个可迭代对象以便我们批量访问。torch.utils.data.Dataset是一个抽象类,不可以实例化,但是可以通过构建这个抽象类的子类来创建数据集。方法,所以继承之后我们的数据集也会拥有此方法,从而合并数据集只需使用 + 运算即可。后,该方法能够根据索引返回对应的单个样本及其对应的标签(以元组形式)这段代码可以创建一个可迭代对象。:返回整个数据集的大小。

2023-01-13 16:12:40 880

原创 【PyTorch深度学习实践】06_多维特征输入(以逻辑斯蒂回归为例)

数据库里一行称为一个Record。loss-epoch图像。

2023-01-10 20:29:25 333

原创 【PyTorch深度学习实践】05_逻辑斯蒂回归

之前使用线性回归解决的都是**回归(预测)**问题,逻辑斯蒂回归模型可以用来解决另一大问题——注意逻辑斯蒂回归虽然名为回归,但解决的是分类问题,是最简单的分类问题模型,用于解决二分类。没有数值比较指没有9>0这种概念。epoch-loss图。

2023-01-09 21:25:01 634

原创 【PyTorch深度学习实践】04_用PyTorch实现线性回归

1.准备数据集 dataset和dataloader 2.设计模型 3.构造损失函数和优化器4.训练过程前馈(算损失)、反馈(算梯度)、更新(用梯度下降更新)

2023-01-09 15:55:55 1267

原创 【PyTorch深度学习实践】03_反向传播

在PyTorch中,torch.Tensor类是存储和变换数据的重要工具,相比于Numpy,Tensor提供GPU计算和自动求梯度等更多功能,在深度学习中,我们经常需要对函数求梯度(gradient)。里面包含两个比较重要的成员data(比如权重值)和grad(损失函数对权重的导数)有两个重要的成员,一个是data(保存权重w),一个是grad(保存损失函数对权重的导数)。对于简单的模型,梯度变换可以用解析式表达进行手算,但是复杂模型(很多w,b)的损失函数需要挨个写解析式,非常不好计算(主要是求导)。

2023-01-09 14:32:34 1905

原创 【python基础_05】面向对象2_封装、继承、多态

私有方法无法直接被类对象使用,但可以被其他成员使用。私有变量无法赋值,也无法获取值。私有方法无法直接被类对象使用。多态的概念依赖于继承。

2023-01-03 17:30:16 156

原创 【python基础_05】面向对象1_对象和类、魔术方法

对象和类、魔术方法

2023-01-02 23:06:56 255

原创 【python基础_04】模块与包

import导入包中的模块 import my_package . model1 import my_package . model2my_package . model1 . info_print1() # 调用时需要写包名.模块名.方法名 my_package . model2 . info_print2()

2023-01-02 22:28:16 130

空空如也

空空如也

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

TA关注的人

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