自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 数组中第K大的数字

数组中的第K个最大元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4。只需要把快速排序的代码稍微修改就行,把大的元素放在前面。输入: [3,2,1,5,6,4] 和 k = 2。

2023-08-22 16:41:34 172

原创 快速排序的过程

快速排序基本思想是 :通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right,其中left中的元素都比pivot小,right的都比pivot的大,然后再次堆left和right各自再执行快速排序,在将左右子序列排好序之后,整个序列就有序了。这里排序进行左右划分的时候是一直划分到子序列只包含一个元素的情况,然后再递归返回。我们可以看到26最终被放到了属于自己的位置上,不会再变化。而左侧的都比15小,左侧都比15大,因此26的左右两侧可以分别再进行排序。

2023-08-22 16:30:30 296

原创 算法通关村——二分查找在找缺失数字中的应用

剑指offer题目: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。对于有序的也可以用二分查找,这里的关键点是在缺失的数字之前,必然有nums[i]==i,在缺失的数字之后,必然有nums[i]!因此,只需要二分找出第一个nums[i]!=i,此时下标i就是答案。若数组元素中没有找到此下标,那么缺失的就是n。

2023-08-20 22:36:04 166

原创 算法通关村——透彻理解二分查找

二分查找就是将中间结果与目标进行比较,一次去掉一半,因此二分查找可以说是最简单、最典型的分治了。

2023-08-20 16:33:40 132

原创 算法通关村—轻松搞定二叉树最大深度问题

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

2023-08-13 16:51:53 51

原创 算法通关村—轻松搞定合并二叉树

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。如果两个二叉树的对应节点都不为空,则合并后的二叉树的对应节点的值为两个二叉树的对应节点的值之和,此时需要显性合并两个节点。如果两个二叉树的对应节点只有一个为空,则合并后的二叉树的对应节点为其中的非空节点;如果两个二叉树的对应节点都为空,则合并后的二叉树的对应节点也为空;

2023-08-13 16:44:38 94

原创 算法通关村—迭代实现二叉树的后序遍历

有没有发现,new_swq与前序遍历很像,前序遍历是先中间,再左边,然后右边,而这里是先中间,再右边,然后左边,只要把代码顺序改一下就可以了。最后将此反转就可以得到后序遍历的结果。如下图,我们先观察后序遍历的结果是seq={9 5 7 4 3},如果我们将其整体反转的话就是new_seq={3 4 7 5 9}。最好理解的方法:反转法。

2023-08-11 10:39:28 47

原创 深入理解前中后序遍历

通过二叉树可以非常方便的理解递归,递归只处理当前这一层和下一层之间的关系,并不关心下层和下下层之间的关系,这就像老子只管养好儿子,至于孙子怎么样,那是儿子的事,你也不能瞎掺合。

2023-08-10 23:08:00 43

原创 算法通关村—原来如此简单

LeetCode 107.给定一个二叉树,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。思路:遍历完每一层节点后,将储存该层结点的列表添加到结果列表的头部。二叉树的层序遍历-自底向上。

2023-08-09 22:10:32 49 1

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

中序的划分:[3 4 8 6 7 5 2 ]1 [10 9 11 15 13 14 12]中序:3 4 8 6 7 5 2 后序:8 7 6 5 4 3 2。中序:3 4 8 6 7 5 后序:8 7 6 5 4 3。中序: [8 6 7] 5 后序:[8 7 6] 5。中序: 4 8 6 7 5 后序:8 7 6 5 4。中序: 8 6 7 5 后序:8 7 6 5。中序: 8 6 7 5 后序:8 7 6 5。中序:[3 4 8 6 7 5] 2。

2023-08-08 15:34:56 54

原创 算法通关村—队列实现栈问题解析

创建两个队列queue1和queue2,入栈操作时,首先将元素入队到 queue2,然后将 queue1的全部元素依次出队并入队到queue2,此时 queue2的前端的元素即为新入栈的元素,再将 queue1和queue2互换,则 queue1的元素即为栈内的元素,queue 1的前端和后端分别对应栈顶和栈底。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。

2023-08-06 16:42:12 101

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

队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,即我们常说的FIFO(first in first out)先进先出。队列实现方式也有两种形式,基于数组和基于链表。对于基于链表,因为链表的长度是随时都可以变的,实现起来比较简单。

2023-08-06 15:40:38 39

原创 算法通关村—计算器问题解析

解决运算器问题,最好的工具就是栈。由于乘除优先于加减计算,因此不妨考虑先进行所有乘除运算,并将这些乘除运算后的整数值放回原表达式的相应位置,则随后整个表达式的值,就等于一系列整数加减后的值。给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。

2023-08-04 23:22:02 41 1

原创 算法通关村—最小栈问题解析

此方法要创建辅助栈,例如2,1,3,4 的入栈时,需要创建辅助栈,其中元素依次为2,1,1,1。设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。

2023-08-04 23:14:59 73 1

原创 算法通关村—如何基于链表实现栈

链表也可以实现栈,插入和删除都在头结点进行就可以了。

2023-08-04 22:31:03 81 1

原创 数组中出现次数超过一半的数字

根据数组特点,数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现的次数之和还要多。当遍历到下一个数字的时候,如果与result相同,则次数加1,不同则次数减一,当次数变为0的时候说明该数字不可能为多数元素,将result设置为下一个数字,次数设为1。这样,当遍历结束后,最后一次设置的result的值可能就是符合要求的值(如果有数字出现次数超过一半,则必为该元素,否则不存在),因此,判断该元素出现次数是否超过一半即可验证应该返回该元素还是返回0。首先,用排序行不行?

2023-08-03 16:36:45 84

原创 算法通关村——删除数组元素,双指针的妙用

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。1.原地移除所有数值等于 val 的元素。2.删除有序数组中的重复项。

2023-08-03 16:28:19 102

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

思路:先找到要增加元素的下标index,再将index后的元素往后移动,最后赋值给下标为index的数组赋值。思路:找到要删除的元素的下标index,然后将index后的元素往前移动,size减去1.

2023-07-25 17:01:53 37

原创 链表反转最难的问题——K个一组反转

如果虚拟结点理解了,会发现头插法比上面的穿针引线法更好理解,主要思路还是将其分成已经反转、正在反转和未反转三个部分。为了方便循环,我们可以先遍历一遍数组,统计一下元素数量len,确定要分几组n=len/k,然后再采用与3.1.1小节一样的思路进行反转就可以了。

2023-07-25 16:00:46 68

原创 寻找环状链表的入口

先说结论先按照快慢方式寻找到相遇的位置(假如为下图中Z),然后将两指针分别放在链表头(X)和相遇位置(Z),并改为相同速度推进,则两指针在环开始位置相遇(Y)。因此此时让slow从Z继续向前走,temp从起点开始走,两个同时开始走(两个每次都走一步),一次走一步那么它们最终会相遇在y点,正是环的起始点。分别用fast、slow表示快慢指针,slow每次走一步,fast就走两步,直到在环中的某个位置相会,假如是图中的Z。那么我们可以知道fast指针走了a+b+c+b步,slow指针走了a+b步。

2023-07-25 15:28:20 87

原创 算法通关村第二关——两两交换链表的结点问题解析

思路:结合图来分析,temp=dummy作为辅助结点,循环内第一次运行,temp.next指向node2,node1.next指向node2.next,node2.next指向node1。接下来关键的一步是将temp往后移动,即temp=node1,也就是temp与3结点相邻,在循环第二次的执行中,node1=temp.next 将node1指向3,node2=temp.next.next将node2指向4。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。

2023-07-20 15:30:56 103

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

2.直接操作链表实现反转。

2023-07-19 16:27:26 116

原创 Unable to find image ‘mq:latest‘ locally

解决问题:\的位置。

2023-07-19 11:02:19 710

原创 算法通关村第一关|链表经典问题之删除链表元素笔记

思路如下:遍历链表,等到当前结点的下一个结点的值等于给定的值时,执行删除 pre.next = pre.next.next;方法一:先遍历一遍链表,找到链表总长度L,然后重新遍历,位置L-N+1的元素就是我们要删的。输入:head = [1,2,6,3,4,5,6], val = 6。问题:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。输入:head = [1,2,3,3,4,4,5]输入:head = [1,1,2,3,3]输出:[1,2,3,4,5]输出:[1,2,3]

2023-07-18 17:31:12 209 1

原创 算法通关村第一关|青铜学习

双向链表可以向前,也可以向后。有两个指针的好处自然是移动元素更方便。3.从某个节点的后部插入。

2023-07-16 17:27:43 594 1

原创 MAVEN配置

The JAVA_HOME environment variable is not defined correctly,this environment variable is needed to run this program.

2023-02-24 23:55:41 675

原创 Java9之后显示newInstance()已经过时

newInstance()已经过时了应该使用getConstructor().newInstance()Class<?> userClass = Class.forName(“Reflection.User”);Object o1 = userClass.newInstance();Object o2 = userClass.getConstructor().newInstance();

2022-03-27 21:25:01 1366

原创 Toolkit.getDefaultToolkit().getImage(Panel.class.getResource())在Java17中返回NullPointerException

初学Java,遇到一些问题一、问题1、环境:win11,java17 & java82、跟着教程学习java,在使用Toolkit.getDefaultToolkit().getImage(Panel.class.getResource())导入图片的时候,老师可以正常运行,我的代码运行时却报空指针。在这里插入图片描述bomb-1.gif,bomb-2.gif,bomb-3.gif放在out/production/chapter16下,与com平级。getResource()中资源名是带

2022-03-11 21:07:41 1609 13

java坦克大战源代码

Java基础学习,练手项目,适用于Java初学者。

2022-03-27

空空如也

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

TA关注的人

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