- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 leetcode 226. 翻转二叉树 java解法
递归函数在递归过程中使用的栈空间的最大深度等于树的高度,最坏情况下,树是一个链表结构,高度为 n,因此空间复杂度为 O(n)。翻转一棵二叉树意味着交换每个节点的左右子树。递归函数需要访问每个节点恰好一次,因此时间复杂度为 O(n),其中 n 是树中节点的数量。给你一棵二叉树的根节点 root,翻转这棵二叉树,并返回其根节点。递归的终止条件是当前节点为 null,即叶子节点。
2024-03-08 13:33:16
501
原创 leetcode 148. 排序链表 java解法
这是一个链表排序的问题,由于要求时间复杂度为 O(nlogn),适合使用归并排序(Merge Sort)来解决。空间复杂度: O(logn)(递归调用栈的深度)时间复杂度: O(nlogn)
2024-02-20 16:29:23
573
原创 LeetCode 24: 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。只能进行节点交换,不允许修改节点内部的值。
2024-01-29 15:47:45
524
原创 leetcode 2. 两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。遍历两个链表,同时将对应位的数字相加,并考虑进位。使用一个额外的节点作为头节点,依次生成新的节点。这个解法通过一次遍历即可完成整个加法过程,实现了高效的相加操作。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。
2024-01-22 14:33:39
412
原创 leetcode 21. 合并两个有序链表
给定两个有序链表list1和list2,将它们合并成一个有序链表。合并后的链表应由两个输入链表的节点组成。返回合并后链表的头。你不能修改列表。请输出结果为新链表的头部。
2024-01-22 13:56:58
540
原创 leetcode 141 判断链表中是否存在环
给定一个单链表的头节点head,判断链表中是否存在环。如果链表中存在环,则返回true,否则返回false。
2024-01-17 21:23:24
492
原创 LeetCode 160: 两个链表的相交节点 - 优雅解法
给定两个单链表headA和headB的头节点,返回它们相交的节点。如果两个链表没有相交,返回null。
2024-01-15 21:44:11
1032
原创 LeetCode 240: Efficient Search in a 2D Sorted Matrix / LeetCode 240:二维有序矩阵中的高效搜索
在这篇文章中,我们将讨论如何高效地在一个二维有序矩阵中搜索特定的目标值。这种矩阵具有特定的属性,即每一行都按升序排列,并且每一列也按升序排列。我们将从理解问题、解题过程到优化方案一步步展开。
2024-01-11 14:39:44
336
原创 旋转图像(Rotate Image)- LeetCode 48
这是一个经典的二维矩阵操作题。理解转置和水平翻转的基本概念,以及正确的执行顺序,将帮助我们高效地解决这个问题。通过这篇文章,希望你能够更深入地理解如何在Java中实现这一算法。
2024-01-10 14:59:17
573
原创 LeetCode算法题解:螺旋矩阵
通过上述方法和代码实现,我们可以按照螺旋顺序遍历给定的矩阵,并将其所有元素存储在结果列表中。通过合理的边界控制和条件判断,我们确保了遍历的正确性和高效性。
2024-01-10 14:29:28
552
原创 总结一下最近工作中遇到的线程池相关问题
总结一下最近工作中遇到的线程池相关问题背景:在业务代码中,新建线程池的代码如下:ThreadPoolExecutor myThreadPool = new ThreadPoolExecutor(0, 100, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());我们的配置是corePoolSize=0;maximumPoolSize=100;keepAliveTime,=0L;使用LinkedBlocking
2022-01-24 21:45:05
375
原创 WEB安全知识学习 - day01 --Burp Suite工具的使用
Burp Suite是一个集合了多种渗透测试组件的渗透工具,使我们自动化地或手工地能更好的 完成对web应用的渗透测试和攻击。Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。启动BurpSuite后,默认拦截的是本地的8080端口.同时,需要在浏览器中...
2021-10-20 13:48:09
2596
1
原创 WEB安全知识学习 - day01 --信息搜集
一、信息搜集–IP内容分发网络(content delivery network或content distribution network,缩写作CDN)指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。CDN节点会在多个地点,不同的网络上摆放。这些节点之间会动态的互相传输内容,对用户的下载行为最优化,并借此减少内容供应者所需要的带宽成本,改善用户的下载速度,提高系统的稳
2021-10-19 17:24:52
2901
原创 JVM虚拟机学习02-运行时数据区
运行时数据区(内存结构)在类加载器系统将class文件加载到JVM中后,JVM会用一段存储空间来存储执行过程中用到的数据和相关信息,这个数据段被叫做Runtime data area(运行时数据区),运行时数据区分为程序计数器、java方法栈,本地方法栈、堆和方法区五个部分。程序计数器(PC)PC是一段较小的内存,用来存放java程序下一条指令所在的地址(如果正在执行的是native方法,则该区域的值为undefined),程序计数器的空间大小不会随着程序的运行而变化,所以该区域不存在内存.
2021-08-05 09:21:52
121
原创 JAVA虚拟机学习总结01-类加载机制
JVM虚拟机java虚拟机(java virtual machine,JVM),一种能够运行java字节码的虚拟机。作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。比如kotlin、scala等。JVM的基本结构JVM由三个主要的子系统构成类加载子系统 运行时数据区(内存结构) 执行引擎类加载机制类的生命周期一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五
2021-08-02 23:45:19
187
原创 springboot+springcloud 项目实战-实现权限管理系统(idea实现)01数据库设计&实现
新手菜鸟一枚,一直苦于没有趁手的项目。最近在gitee上看到了一个前后端分离的权限管理系统-kitty(mongo),感觉很不错,但是项目本身是通过eclipse实现的。所以希望能够带来一个idea实现的教程,希望能和大家一同进步。一、数据库设计当前项目大多采用领域驱动模型(DDD)进行项目设计,因此第一步需要完成对项目数据库的设计。项目主要包含以下表:sys_config:配置表sys_debt:机构表sys_dict:数据字典表sys_log:日志表sys_login_log:登录日志
2021-04-07 14:52:43
1134
1
原创 CICD实践01 jenkins环境搭建
一、CI/CD持续集成(CI)持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。目的:快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续交付(Continuous delivery)持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量
2021-03-05 17:17:47
207
2
原创 从零开始刷Leetcode day19 896. 单调数列
单调数列如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false示例 4:输入
2021-02-28 15:30:23
88
原创 从零开始刷Leetcode day18 832. 翻转图像
832. 翻转图像标签:数组难度:简单给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入:[[1,1,0],[1,0,1],[0,0,0]]输出:[[1,0,0],[0,1,0],[1,1,1]]解
2021-02-26 13:56:45
107
原创 从零开始刷Leetcode day17 转置矩阵
867. 转置矩阵难度:简单给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:m == matrix.lengthn == m
2021-02-26 13:54:04
95
原创 类加载器子系统与SPI机制
类加载器加载过程检测此Class是否载入过,即在缓冲区中是否有此Class,如果有直接进入第8步,否则进入第2步。如果没有父类加载器,则要么Parent是根类加载器,要么本身就是根类加载器,则跳到第4步,如果父类加载器存在,则进入第3步。请求使用父类加载器去载入目标类,如果载入成功则跳至第8步,否则接着执行第5步。请求使用根类加载器去载入目标类,如果载入成功则跳至第8步,否则跳至第7步。当前类加载器尝试寻找Class文件,如果找到则执行第6步,如果找不到则执行第7步。从
2020-12-26 16:30:26
168
原创 软件设计师-2018年下-上午-知识点总结
1、 CPU 在执行指令的过程中,会自动修改( )的内容,以使其保存的总是将要执行的下一条指令的地址。A.指令寄存器B.程序计数器C.地址寄存器D.指令译码器解析:指令寄存器(IR,Instruction Register),用于暂存当前正在执行的指令。程序计数器(Program Counter Register),用于存放下一条指令所在单元的地址的地方。地址寄存器(Adress Register,AR),用来保存当前CPU所访问的内存单元的地址指令译码器(Instruction Deco
2020-10-10 16:18:19
1142
1
原创 《码农翻身》--知识点总结--01我是一个线程---线程生命周期、线程池、缓存、锁
一.线程的生命周期当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。 在线程的生命周期中,它要经过 新建(New)、就绪(Runnable)、运行(Running)、阻塞 (Blocked)和死亡(Dead) 5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自 运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换 。1.新建状态(NEW)当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,
2020-09-27 19:56:48
521
原创 从零开始刷Leetcode day15 109 有序链表转换二叉搜索树(Convert Sorted List to Binary Search Tree )
有序链表转换二叉搜索树-java解法给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5Given the hea
2020-08-18 17:47:00
114
原创 软考--软件设计师--知识点01
对于如下所示的有向图,其邻接矩阵是一个 5*5 的矩阵,采用邻接链表存储时顶点1 的表结点个数为2,定点5的表结点个数为0,顶点2和3的表结点个数分别为 2,2知识点:邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn} [1] 。G的邻接矩阵是一个具有下列性质的n阶方阵:①对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零(在此仅讨论无向简单图),副对角线不一定为0,有向图则不一定如此。②在无向图.
2020-08-13 14:15:48
1967
1
原创 从零开始刷Leetcode day14 字符串相乘(Clone Graph )
字符串相乘-java解法给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.示例 1:输入: num1 = “2”, num2 = “3”输出: “6”
2020-08-13 11:21:06
184
原创 软考--软件设计师--知识点01
关于UML状态图的叙述不正确的是:若事件触发一个没有特定监护条件的迁移,则对象离开当前状态知识点:转换可能具有一个监护条件,监护条件是一个布尔表达式,它是触发转换必须满足的条件。当一个触发器事件被触发时,监护条件被赋值。如果表达式的值为真,转换可以激发;如果表达式的值为假,转换不能激发;下图所示UML图为 类图 有关该图的描述不正确的是 如果B的一个实例被删除,则包含A 的实例都被删除知识点:用况图(用例)用例图,展现了一组用例、参与者(actor)以及它们之间的关系。用例图从用户.
2020-08-12 18:49:34
1373
原创 从零开始刷Leetcode day13 克隆图(Clone Graph )
克隆图-java解法给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。Given a reference of a node in a connected undirected graph.Return a deep copy (clone) of the graph.Each node in the graph contains a val (int) and a list (List[Nod
2020-08-12 10:23:59
230
原创 从零开始刷Leetcode day12 被围绕的区域(Surrounded Regions)
被围绕的区域-java解法给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。Given a 2D board containing ‘X’ and ‘O’ (the letter O), capture all regions surrounded by ‘X’.A region is captured by flipping all 'O’s into 'X’s in that surrounded regio
2020-08-11 15:02:33
129
原创 数据结构与算法-----BFS与DFS(广度优先搜索与深度优先搜索)
DFS:(Deep First Search)深度优先搜索。是一种利用队列实现的搜索算法。简单来说,其搜索过程和 “湖面丢进一块石头激起层层涟漪” 类似。BFS:(Breath First Search)广度优先搜索。是一种利用递*归实现的搜索算法。简单来说,其搜索过程和 “不撞南墙不回头” 类似。BFS 的重点在于队列,而 DFS 的重点在于递归。这是它们的本质区别。话不多说,先从DFS说起。**1.DFS(深度优先搜索)深度优先搜索的步骤:递归下去,回溯上来。顾名思义,深度优先,则是以
2020-08-11 11:11:15
211
原创 从零开始刷Leetcode day11 计数二进制子串(Count Binary Substrings)
打家劫舍 III-java解法在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。The thief has found himself a new place for his thievery a
2020-08-10 16:40:22
142
原创 从零开始---搭建单步调试JVM源码环境
搭建单步调试openjdk环境编译环境操作系统:Ubuntu16boot jdk:jdk7编译的jdk:jdk8看源码工具:Clion、NetBeans编译首先安装依赖sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-devlibxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache之后安装boot jdk因为openjdk源码中有些功
2020-08-05 17:08:37
679
原创 类加载器子系统
类加载器子系统klass模型klass的体系结构//klassOop的一部分,用来描述语言层的类型class Klass;//在虚拟机层面描述一个Java类class instanceKlass;//专有instantKlass,表示java.lang.Class的Klassclass instanceMirrorKlass;//专有instantKlass,表示java.lang.ref.Reference的子类的Klassclass instanceRefKla
2020-08-04 14:19:17
158
原创 从零开始刷Leetcode day010 三数之和(3SUM)
最长公共前缀(Longest Common Prefix)-java解法编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。java解法 :1.暴力解法代码:class Solution { public
2020-07-27 11:51:12
75
Xmind思维导图模板,并非软件.7z
2020-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人