自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 84.柱状图中最大的矩形

本文探讨了LeetCode中柱状图最大矩形面积问题的解法。首先分析了暴力解法思路:以每个柱为基准向左右扩展边界,时间复杂度为O(n²),无法通过大规模数据测试。然后介绍了优化的单调栈解法:利用单调递增栈存储柱高索引,遇到较小值时触发边界计算,每次弹出栈顶元素时计算当前高度对应的最大面积。关键点在于右边界由当前遍历索引确定,左边界由栈顶元素决定。该方法将时间复杂度优化至O(n),并处理了栈空等边界情况。文章通过图示详细解释了算法流程和计算宽度的逻辑。

2026-01-05 11:15:11 884

原创 跳 跃 游 戏

本文分析了LeetCode上的跳跃游戏问题,通过示例讲解和贪心算法思路,探讨如何判断能否从数组起点走到终点。文章指出关键在于维护一个可到达的最远位置max,若遍历过程中当前位置i超过max则失败。代码实现简洁,通过比较nums[i]+i与max来更新最远可达位置。最后强调理解max的意义是解题核心,并欢迎讨论更优算法。

2025-12-31 16:37:50 839

原创 有效的完全平方数

本文探讨了判断一个数是否为完全平方数的三种方法。第一种暴力遍历法时间复杂度为O(n);第二种优化方法使用二分查找将复杂度降至O(logn);第三种数学方法利用奇数相加等于完全平方数的特性,时间复杂度为O(n)。文章详细解释了第三种方法的数学原理(等差数列求和),并提供了对应的Java代码实现。前两种方法代码简洁明了,第三种方法则展示了数学思维在算法中的应用。

2025-12-31 15:06:10 340

原创 顺时针旋转矩阵

本文探讨了二维矩阵顺时针旋转90度的两种算法。第一种方法通过创建新数组,将原数组的行依次存放到新数组的最后一列,时间复杂度O(n²),空间复杂度O(n)。第二种方法先沿左对角线翻转矩阵,再进行行内翻转,时间复杂度相同但实际消耗更大,空间复杂度O(1)。文章提供了两种方法的代码实现,并邀请读者分享更高效的算法。

2025-12-31 13:29:18 314

原创 测试概念篇(模型详细版)

本文介绍了软件测试中的需求概念和开发模型。需求分为用户需求和软件需求,前者是用户的简单表述,后者是经过评估转化的详细开发依据。软件生命周期包含需求分析、计划、设计、编码、测试和维护六个阶段。常见的开发模型如瀑布模型存在测试后置风险,可能导致后期大范围返工,但仍适用于小型软件开发。文章通过购买电脑的类比,生动说明了软件生命周期的运作流程,并强调了需求评估和技术可行性的重要性。

2025-12-30 12:45:30 941

原创 初识测试(详细篇)

本文主要介绍了软件测试的基本概念及其重要性。测试是对产品功能和质量进行检查的过程,贯穿软件开发全生命周期。软件测试能够提前发现潜在问题,保障产品质量,提升用户体验和企业盈利。文章还区分了软件测试开发与普通测试、软件开发与测试的不同职责,强调测试人员需要具备开发知识、自动化测试技术、设计测试用例能力等综合素质。最后阐述了选择测试岗位的原因,包括个人兴趣、职业规划以及测试工作特有的挑战性和成就感。测试作为产品质量的把控环节,需要具备责任感、抗压能力和探索性思维。

2025-12-27 22:56:09 752 1

原创 Linux部署javaWeb项目以及Linux的基本命令使用()详细版)

本文介绍了Linux操作系统的基础知识与应用。首先概述了Linux作为开源操作系统的特点,包括其稳定性、安全性和强大的社区支持。重点讲解了Linux环境搭建的三种方式,推荐使用云服务器方案,并详细说明了通过XShell连接Linux服务器的步骤。文章还列举了常用Linux命令如ls、pwd、cd、touch和cat的使用方法,强调命令行操作的优势在于节省系统资源和网络带宽。最后指出Java程序员学习Linux的必要性,特别是在项目部署方面的应用价值。全文为Linux初学者提供了实用的入门指导。

2025-12-08 15:15:06 923

原创 15.三数之和

本文介绍了LeetCode三数之和问题的解法。题目要求在数组中找出所有不重复的三元组,使其和为0。作者通过分析暴力解法的时间复杂度(O(n³))过高,提出优化思路:先将数组排序,固定一个数后转化为两数之和问题(O(n²))。具体实现中,使用双指针法在剩余数组中寻找两数之和等于固定数的相反数,并通过循环跳过重复元素以避免重复解。关键点包括:必须排序数组、处理重复数据时注意边界条件、双指针不能交叉。代码实现展示了如何通过排序和双指针技巧高效解决该问题,同时处理了各种重复情况。

2025-10-26 19:49:58 1002

原创 LCR 179.查找总价值为目标值的两个商品

文章摘要:本文介绍了LeetCode上"和为s的两个数字"问题的解法。作者首先尝试暴力解法(双重循环遍历),但发现超时。随后提出更优的双指针算法:先对数组排序,然后用两个指针分别指向首尾元素,通过比较当前和与目标值的大小关系移动指针。当和等于目标值时返回结果。该算法时间复杂度优于暴力解法,并附有Java代码实现。欢迎读者提出更高效的解决方案。

2025-10-26 17:08:59 417

原创 611有效的三角形个数

本文介绍了LeetCode上判断有效三角形数量的算法思路。首先分析暴力解法三层循环不可行,进而提出排序后使用双指针优化的方法。核心思路是:排序后固定最大边,用双指针判断较小的两边之和是否大于最大边。若成立,则中间所有组合都成立,直接计算数量;否则移动指针调整组合。该算法时间复杂度为O(n²),比暴力解法更高效。最后给出了Java代码实现,并提醒注意边界条件和多种情况的处理。

2025-10-25 16:34:35 975

原创 11.盛最多水的容器

本文介绍了LeetCode上"盛最多水的容器"问题的解题思路。题目要求在给定数组中找到两条线,使其与x轴构成的容器能容纳最多的水。作者首先分析了暴力解法效率低的问题,进而提出双指针优化方案:初始化左右指针分别指向数组两端,计算当前容积后,移动较小高度的指针以寻找可能更大的容积。这种方法通过减少不必要的比较,将时间复杂度优化至O(n)。文章包含详细的图解说明和Java代码实现,帮助理解双指针算法的正确性。

2025-10-24 23:27:39 904

原创 202.快乐数

这篇文章介绍了如何判断一个数是否为快乐数。快乐数的定义是将一个数的各位数字平方后相加,重复这个过程直到结果为1(即为快乐数),或者进入无限循环(非快乐数)。文章提出使用快慢指针算法来检测循环,将数字转换后的平方和视为指针。快指针每次计算两次平方和,慢指针计算一次,两者最终会在循环中相遇。若相遇时的值为1则是快乐数,否则不是。代码实现展示了如何通过计算各位平方和及快慢指针判断快乐数。

2025-10-24 22:13:57 514

原创 详解TCP(详细版)

本文介绍了计算机网络的基础知识,主要包括局域网(LAN)和广域网(WAN)的概念及其区别,IP地址的作用和表示方式,端口号的功能及分配原则。此外,还阐述了协议分层的必要性,介绍了TCP/IP五层模型及各层的职责,解释了数据在网络传输中的封装和分用过程。文章旨在帮助读者理解网络通信的基本原理和关键概念。

2025-10-18 21:44:25 1146

原创 NC313 两个数组的交集

本文讨论了如何高效求解两个数组的交集问题。作者首先通过分析题目要求,指出使用哈希表存储第一个数组元素,再遍历第二个数组查找重复元素的基本思路。针对可能出现重复结果的问题,提出了在添加到结果列表后立即从哈希表删除该元素的解决方案。此外,作者提出使用布尔数组代替哈希表进行优化,通过数组下标直接映射元素存在状态,从而提升小范围数据的处理效率。最后给出了具体的Java代码实现,其中利用布尔数组标记元素出现情况,并确保结果不重复。文章邀请读者分享更高效的算法方案,体现了共同进步的学习态度。

2025-10-16 21:16:26 516

原创 BC153 数字统计

本文介绍了如何统计给定区间内数字2出现的次数。通过枚举区间内的每个数字,对每位数字进行取模和除法运算,逐位检查是否为2。代码实现简单,时间复杂度为O(n),适用于小数据范围。关键点在于正确处理边界值和逐位检查的方法。最终输出区间内所有数字包含2的总次数。

2025-10-16 20:38:31 210

原创 NC10 大数乘法

本文介绍了一种高效的大数相乘算法,通过"相乘不进位"的方法避免了传统乘法的复杂集合操作。算法核心是将每位数字相乘结果存储在对应位置,最后统一处理进位。关键步骤包括:1)字符串逆置便于低位计算;2)开辟足够数组空间(两数位数之和);3)逐位相乘累加;4)处理进位和字符串转换;5)去除前导零。该方法优化了时间复杂度,适合处理超长数字(如10^100级别)的相乘问题。代码实现采用Java语言,通过StringBuilder高效处理字符串操作。

2025-10-12 21:07:28 562

原创 NC40 链表相加(二)

这篇文章探讨了链表相加问题的两种解决方案。第一种方法是将链表转换为字符串相加后再重建链表,第二种方法是通过链表逆置来实现从低位到高位的加法运算。文章重点介绍了链表逆置的实现细节,包括使用头插法和注意事项(如节点移动时的边界条件)。最终给出的代码实现了链表逆置和逐位相加的功能,并强调了要从头节点的下一个节点开始逆置。整体而言,文章将问题核心聚焦于链表逆置这一关键操作上。

2025-10-12 18:12:01 482

原创 牛客:大加法数

本文介绍了如何实现字符串数字相加的算法。

2025-10-12 17:16:35 432

原创 数据库基础以及基本建库建表的简单操作

数据库的本质是一个结构化数据的集合及其管理系统,其核心不仅仅是存储数据,而是通过一套软件系统(数据库管理系统,DBMS)实现数据的高效访问,安全控制,逻辑关系维护及复杂操作支持。即使数据最终存储在磁盘上,直接使用文件存储与通过数据库管理存在根本性差异。

2025-03-08 21:10:32 3377

原创 JavaSE试题总结

Java练习题总结

2024-11-26 15:45:00 855

原创 刷题——字符串中的单词数(力扣)

字符串的单词数——力扣

2024-11-25 12:41:46 527

原创 Java实现字符串相加

力扣题:字符串相加

2024-11-24 19:09:52 1499

原创 Java实现两数交换

在Java中,因为没有地址的说法,因此无法直接通过传地址达到两数交换的效果,Java中的基本数据类型是存储在栈空间上的,而栈空间的地址是无法直接拿到的,在栈空间上存储的地址都是局部变量,当方法结束后变量就会被JVM直接回收,这也就意味着只要是存储在栈空间上的变量都无法做到两数交换。

2024-11-19 22:26:53 1329

原创 Java---图书管理系统

【代码】Java---图书管理系统。

2024-11-15 07:39:50 2614

原创 Java 详解 接口

我们知道继承普通类和继承抽象类的存在,继承本质上就是实现对共性的抽取同时实现代码的复用,通过对现实事物抽象成为一个类,类内包含这一类事物的属性和行为,继承的存在就是将这一类事物的共同属性和行为抽取出来,当我们在定义属于这一类事物的类时可以直接继承使用,而抽象类的出现是因为父类提供的信息不足以描述一个具体的类,因此将父类定义为抽象类,间接加上了一层校验,防止在代码中不小心使用父类创建并使用父类对象。但是继承也有缺点,继承是对共性的抽取,不同的对象虽然同属一个类但各自都会有不同的个性。

2024-11-10 18:43:00 3551

原创 Java 抽象类 详解

在Java中使用最多的就是类,类用于抽象一类事物,是将现实世界的事物通过抽象的方式给描述成为一个类,该类具有这一类事物的属性和行为,通过new关键字可以实例化类,在程序世界中按照类的描述创建一个对象。而当一个类提供的信息不足以实例化一个具体的对象时,或者说当前类的行为不符合具体对象的行为时,我们是不会将当前类实例化对象的,这种类一般被定义为抽象类

2024-11-07 21:35:31 2157

原创 Java的Object类常用的方法(详述版本)

Object类有点类似抽象类,但是Object类并没有被abstract关键字修饰,也就是说:Objcet类不是抽象类。但Object类就是像类似抽象类但也不是很像,继承抽象类的子类,子类当中必须重写抽象类当中的所有的抽象方法,但是抽象类当中可以不定义抽象方法,可以定义正常的方法;而Object类中的方法,因为Object类不是抽象类,因此Object类当中不可能存在抽象方法,但是Object类的子类如果需要用到Object类的方法时,基本都需要进行重写才适用于当前类,否则不适用。

2024-11-06 21:56:54 1514

原创 Java三大特性之一——多态(详细版)

Java多态是面向对象编程的一个重要特性,它允许不同的对象对同一消息做出不同的响应。具体点就是不同的对象去完成相同的一个任务完成后展现的结果不相同。比如:学生在学校里面学习,但是学生分为体育生和文化生,体育生在学校里面主要学习体能方面的训练技巧,文化生在学校里面主要学习文化知识,两者在学校里面都是进行学习这一件事,但是体育生和文化生学习得到的内容并不相同,体育生学习后的结果就是体能方面的提升,文化生学习后的结果就是将知识记忆在脑海中,两者都是进行学习,但是结果并不相同,这就是多态。

2024-11-05 17:07:03 6534 2

原创 Java三大特性之一——继承(详细版)

Java中的继承是面向对象编程的一个重要特性,它允许一个类(子类,派生类)继承另一个类(父类,基类,超类)的属性和方法,通过继承机制,子类可以重用父类的代码,并在原有基础之上进行扩展和增加新的功能。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,继承提高了代码的复用性,减少了代码冗余,并且继承是实现多态的基础。继承主要解决的问题是:实现共性的抽取,并实现代码的复用。

2024-11-01 23:20:41 1711

原创 Java类的static成员以及代码块(详细版)

在Java的类中一般定义有成员属性,以及成员方法两种,但实际上两种可以算为一类,但还可以定义另外一种,就是被static修饰的变量和方法,被static修饰的变量称之为静态变量,也可以叫类变量;被static修饰的方法被称之为静态方法,也可以叫类方法。被static修饰的成员,最大的特性就是其不属于对象,不依靠对象,这也就意味着被static修饰的成员在没有实例化对象的情况下就可以使用,被static修饰的成员其属于类,是所有对象所共享的,可以直接使用类名访问并调用。

2024-10-28 21:51:45 1944 1

原创 Java三大特性之一—— 封装

封装指的是将数据和操作数据的方法有机结合,同时对外隐藏内部的细节,只暴露必要的接口供其他对象使用。封装性的主要目的是保护数据,防止外部的不合理访问和修改,从而提高代码的可维护性和可复用性。

2024-10-26 20:46:14 1225

原创 Java的类和对象(详情版)

面向对象简单来说就是:只考虑如何操作,不考虑操作内部的细节拿我们跑步来说,在面向对象的世界里面,首先跑步包含着:人、跑鞋、袜子、跑步的地方这4个对象,那么在面向对象的世界里面跑步的过程就是人穿袜子,穿鞋子,去跑步的地方,然后人就会自动跑步直到休息,整个过程就是人,跑鞋,袜子,跑步的地方四个对象之间的交互完成的,并不需要考虑人是怎么跑步的,是怎么休息的。面向过程简单来说就是:一件事情的每个细节都要完整的陈述出来还是拿跑步来说,在面向过程的世界里面,没有对象的说法,那么就是只有开始,过程,结果。

2024-10-26 01:55:28 969

原创 java的数组和引用类型解析(详细版)

引用本质上是一个变量,但是引用本身并不存储相应的实际值,而是用于存储对象的地址,此时就可以同过引用去对对象进行操作,这也就意味着引用的作用并非存储实际值。

2024-10-24 09:42:16 1481 2

原创 了解String、StringBuilder与StringBuffer之间的区别(入门)

String是一种不可变对象,字符串的内容是不可改变的。String类在创建的时候内容一旦进行初始化之后就不能再被修改。这意味着当我们调用String类的方法对字符串进行修改之类的操作,实际上是新创建了一个对象对其进行操作,最终再将新创建的对象返回1、方便实现字符串对象池,,如果String可变,那么对象池就想要考虑写时拷贝到问题了2、不可变对象是线程安全的3、不可变对象更方便缓存hash code,作为key时可以更高效保存到hashMap中。

2024-10-22 18:43:39 1964

原创 java的String(详述)

String是一种不可变对象,字符串中的内容是不可变的,一旦初始化完成后就无法改变了,虽然可以使用“+=”进行字符串追加,但是并不是真正意义上的追加,“+=”实际上是new了几个新对象进行追加成为一个新的对象最后再返回变成String类型,本质意义上也不是在原字符串的基础上追加。String类的字符实际是保存在内部维护的value字符数组中,并且该数组也被final修饰,表示value本身的引用对象不可以修改,即不可以引用其他的字符数组,但是value引用的数组内容是可以修改的。

2024-10-22 07:52:36 5048

原创 JAVA的方法 + 递归(详细版)

方法是什么?在人们有目的的行动中,通过一连串有特定逻辑关系的动作或心理活动来完成特定的任务。这些有特定逻辑关系的动作所形成的集合整体就称之为人们做事的一种方法。

2024-09-28 01:07:35 1263

原创 java逻辑控制和输入输出(详细版)

何为逻辑控制?逻辑控制是一种通过逻辑运算和决策来实现系统控制的方法。它利用布尔代数的原理进行逻辑判断和计算,以决定所需操作和输出。逻辑控制可以根据输入信号的状态和规则,执行相应的操作和行为,使得系统能够按照指定的要求完成任务。

2024-09-24 22:27:32 1192 1

原创 java的运算符(详细版)

运算符是什么呢?其实这个问题很简单,运算符在我们的生活中很常见,失去了它,我们的数学基本报废了,像“+ , - ,* , /”都是我们最基本的运算符。即:对操作数进行操作时使用的符号,不同操作符的含义各不相同。

2024-09-22 21:32:11 5673

原创 初识Java

Java!正式启动!首先,什么是Java呢?Java是一门优秀的程序设计语言,它具有赏心悦目的语法和易于理解的语义,不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机器等各种场合。

2024-09-12 18:02:54 1092

原创 恶搞一下,关机程序,模拟黑客的一天

今天我们要写的这个代码叫关机程序,不知道大家有没有看过一些视频,就是讲学生交作业恶搞老师,他们的作业是交自己写的代码编译的程序,但是他们在程序里面还加上了一些代码,搞得老师只能根据上面的提示一步一步的操作,最终掉入学生的陷阱哈哈哈哈。我们今天要写的这个代码其实和这个差不多的!!!大家是不是心中有了一些邪恶的想法哈哈哈哈哈。

2024-06-07 18:17:31 1020 1

空空如也

空空如也

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

TA关注的人

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