自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA Collections类主要应用API

类是 Java 集合框架(Java Collections Framework)的一部分,它位于java.util包中。这个类提供了对集合(Collection)操作或返回集合的视图的各种静态方法,但不能实例化类(因为它所有的方法都是静态的)。这些静态方法主要用于操作或查询集合,而不是提供新的集合实现。下面是一些。

2024-09-02 11:47:36 623

原创 JAVA Lambda 表达式相关语法

Java中的Lambda表达式是Java 8引入的一个重要特性,它提供了一种清晰且简洁的方式来表示只有一个抽象方法的接口(称为函数式接口)的实例。Lambda表达式本质上是一个匿名方法,它可以让你的代码更加简洁易读。

2024-09-02 11:18:45 690

原创 冒泡排序算法

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这意味着数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(或说是排序的开头位置),就如同水中的气泡一样上升到水面。冒泡排序的写法可以简单分为两种方式,分别是:前同后异、前异后同。

2024-08-28 21:25:50 1414

原创 不定长滑动窗口(求子数组个数)的两类典型应用

不定长滑动窗口,也可以称之为双指针;

2024-08-27 18:16:56 350

原创 Leetcode 713.乘积小于k的子数组(不定长滑动窗口(求子数组个数))

给你一个整数数组nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。88 个乘积小于 100 的子数组分别为:[10]、[5]、[2]、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。

2024-08-27 18:03:01 302

原创 Leetcode 2799.统计完全子数组的数目(不定长滑动窗口(求子数组个数)

给你一个由整数组成的数组nums。如果数组中的某个子数组满足下述条件,则称之为返回数组中的数目。是数组中的一个连续非空序列。4完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2]。10数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10。

2024-08-27 17:58:36 238

原创 JAVA var类型详解

在Java中,var关键字并不是传统意义上的一个新类型,而是一个类型推断的增强,它首次在Java 10中被引入作为预览特性(通过JVM 参数启用),并在Java 11中被正式作为预览特性的一部分,最终在Java 14中成为正式功能。var的使用使得局部变量声明更加简洁,但重要的是要理解其背后的类型推断机制以及它的使用限制。

2024-08-27 14:56:12 262

原创 鸽巢原理(抽屉原理)

鸽巢原理(抽屉原理)是一个重要的组合数学原理,它在许多领域都有广泛的应用,包括计算机科学、数学、统计学、经济学等。这个原理以一种非常直观和易于理解的方式说明了在分配有限数量的物体到有限数量的容器中时,至少有一个容器会包含多于一个的物体。

2024-08-24 15:48:07 360

原创 JAVA双端队列Deque详解

Java中的双端队列(Deque, 全称是double-ended queue)是一种具有队列和栈的性质的抽象数据类型。双端队列中的元素可以从两端弹出(在队列的头部和尾部进行添加或删除操作),因此它既可以作为FIFO(先进先出)的队列使用,也可以作为LIFO(后进先出)的栈使用。Java在java.util包中提供了Deque接口,以及它的几个实现类,如ArrayDeque(基于数组的双端队列)、LinkedList(虽然通常用作链表,但它也实现了Deque接口,因此可以作为双端队列使用)。

2024-08-23 22:06:49 618

原创 JAVA红黑树TreeMap/TreeSet详解

Java中的红黑树是一种自平衡的二叉查找树,它通过特定的旋转和重新着色操作来确保树的高度大致保持在对数级别,从而在平均和最坏情况下都能保证查找、插入、删除等操作的时间复杂度为O(log n)。

2024-08-23 21:30:09 1214

原创 分组循环算法

分组循环算法(Group Round Robin Algorithm)通常用于将一组元素(如任务、数据项等)均匀地分配到多个组中,并可能在这些组之间循环地选择以进行进一步处理。这种算法在负载均衡、任务调度、数据分区等场景中非常有用。

2024-08-22 18:07:03 402

原创 Leetcode 2760.最长奇偶子数组

在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。在这个示例中,我们选择从 l = 0 开始、到 r = 2 结束的子数组 => [2,3,4]。在这个示例中,我们选择从 l = 1 开始、到 r = 1 结束的子数组 => [2]。因此,答案就是这个子数组的长度 3。可以证明 3 是满足题目要求的最大长度。可以证明 3 是满足题目要求的最大长度。可以证明 1 是满足题目要求的最大长度。以整数形式返回满足题目要求的最长子数组的长度。

2024-08-22 18:02:45 297

原创 加减乘除遇上取模

【代码】加减乘除遇上取模。

2024-08-22 13:01:10 279

原创 秦九韶算法

秦九韶算法是一种将一元n次多项式的求值问题转化为n个一次式的算法,这种算法通过减少乘法的次数,大大提高了多项式求值的效率。秦九韶的这一贡献被详细记载在他的数学著作《数书九章》中,该书系统地总结和发展了高次方程的数值解法与一次同余问题的解法,是中国古代数学的重要里程碑。

2024-08-21 22:42:17 285

原创 计数排序算法

计数排序(Counting Sort)是一种非比较型整数排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

2024-08-21 15:19:46 695

原创 while循环中潜在的数组越界问题

的存在,实际上并没有执行到会越界的代码行。因此,直接的越界错误不会发生,但代码的设计使得它更容易引入错误或难以理解。此时,循环的下一个迭代(尽管实际上不会发生,因为循环条件已不满足)会尝试访问。是一个有效的索引(即不超过数组的最后一个元素的索引)。然而,在这种情况下,虽然代码在逻辑上存在潜在风险(因为它依赖于。增加1,准备下一次迭代,但循环的条件会阻止它超过。,这是一个越界访问,因为数组索引是从0到。的增加在读取之后发生),但由于循环条件。但关键点是,这个增加是在访问。,即数组的最后一个元素),但紧接着。

2024-08-21 14:53:13 287

原创 JAVA 8 mapToInt()方法

mapToInt。

2024-08-20 18:42:09 439

原创 Leetcode 1456.定长子串中元音的最大数目

"lee"、"eet" 和 "ode" 都包含 2 个元音字母。任意长度为 2 的子字符串都包含 2 个元音字母。的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。字符串 s 中不含任何元音字母。

2024-08-19 16:23:27 159

原创 定长滑动窗口算法

在Java中实现定长滑动窗口算法,主要用于处理数组或列表中的一系列元素,通过固定大小的窗口来遍历这些元素,并在每个窗口位置执行特定的操作(如求和、查找最大值等)。然后,方法通过一个循环来滑动窗口,每次循环都会从当前和中减去窗口最左边的元素,并加上新进入窗口的元素,从而更新当前和,并将其存储在。以下是一个使用Java实现的定长滑动窗口算法示例,该示例用于计算给定数组中每个滑动窗口内的元素和。在初始化阶段,方法计算了第一个窗口的元素和,并将其存储在。,因为每个窗口都会从数组的开始向后滑动,直到数组末尾的。

2024-08-19 15:40:42 400

原创 Java 9 List.of()的使用

List.of()是 Java 9 引入的一个静态方法,用于创建不可变的列表(这意味着一旦使用List.of()创建了列表,你就不能向其中添加、删除或修改元素。这个方法提供了一种方便的方式来创建包含零个或多个元素的不可变列表。List.of()方法有几个重载版本,允许你传递零个到十个元素作为参数。如果你需要创建包含超过十个元素的列表,你可以使用List.of()方法来组合较小的列表,或者使用其他集合构造方法(如后跟,尽管这不是一个纯粹的不可变列表,因为它仍然可以通过原始数组进行修改)。

2024-08-18 21:55:18 489

原创 Java this关键字详解

this。

2024-08-17 17:01:12 603

原创 Fisher-Yates 洗牌算法

Fisher-Yates 洗牌算法(也称为 Knuth 洗牌算法),是一种在编程中用来随机排列一个有限序列(比如数组)的有效算法。其核心思想是遍历数组,对于每个位置,随机选取一个包括当前位置在内的、尚未处理的位置,然后与当前位置交换元素。这个过程一直进行到遍历完所有元素。Fisher-Yates 洗牌算法的一个关键点是确保每个元素都能等概率地出现在数组的任何位置上。

2024-08-17 15:05:50 342

原创 Leetcode 70.爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶n = 33有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶。

2024-08-16 21:52:12 338

原创 二分查找算法详解

二分查找算法(Binary Search Algorithm)是一种在中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到元素。二分查找算法的,其中n是数组中的元素数量。这意味着随着数组大小的增加,查找所需的时间以对数速度增长,相对于简单的线性查找(时间复杂度为O(n))来说,效率要高得多。

2024-08-16 18:44:30 380

原创 二叉树遍历

二叉树的遍历是二叉树操作中的一个基本且重要的概念,它指的是按照一定的规则访问二叉树中的每个节点,并且每个节点仅被访问一次。常见的二叉树遍历方式有四种:前序遍历(Pre-order Traversal)、中序遍历(In-order Traversal)、后序遍历(Post-order Traversal)和层序遍历(Level-order Traversal)。

2024-08-15 18:58:05 1247

原创 获取链表中间位置的两种方法方法

我们也可以使用快慢指针在一次遍历中找到:慢指针一次走一步,快指针一次走两步,快慢指针同时出发。当快指针移动到链表的末尾时,慢指针恰好到链表的中间。通过慢指针将链表分为两部分。我们可以计算链表节点的数量,然后遍历链表找到前半部分的尾节点。若链表有奇数个节点,则中间的节点应该看作是前半部分。

2024-08-14 16:47:30 232

原创 JAVA ArrayList详解

ArrayList是 Java 中的一个动态数组实现,它属于 Java 集合框架(Java Collections Framework)的一部分。ArrayList内部是通过一个动态扩展的数组来存储元素的,这意味着当需要添加更多元素而当前数组容量不足时,ArrayList会自动创建一个更大的数组,并将原有数组的元素复制到新数组中,然后再添加新元素。

2024-08-14 15:08:46 346

原创 当链表反转时,ListNode newHead = head;无法将原链表保存的原因

当使用链表的过程中反转链表的操作时,我们会发现ListNode newHead = head;提前保存的链表的头节点并没有保存下来,而是发生了变化,那这是为什么呢?在链表反转的过程中,传入的head节点(即原链表的头节点)在反转后的链表中将位于新的链表的末尾。这是因为链表反转的基本思想是将每个节点从它原来的位置移动到链表的新末端,并更新其next指针以指向其原始的前一个节点。当递归到链表的末尾时(即),该节点(原链表的尾节点)成为反转后链表的头节点。

2024-08-14 14:39:18 894

原创 Leetcode 234.回文链表

给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。truefalse[1, 105]你能否用O(n)时间复杂度和O(1)空间复杂度解决此题?

2024-08-14 14:28:44 445

原创 如何拿到链表的第一个节点

如果你在使用自定义的链表,那么获取第一个节点的方式将取决于你的链表实现。通常情况下,自定义链表会有一个指向链表第一个节点的头指针(head)。通过直接访问这个头指针,你可以获取到链表的第一个节点。int val;val = x;// 链表的头指针// 构造函数等...// 获取链表的第一个节点// 其他方法...// 使用// 假设我们向list中添加了一些节点...// 获取并处理第一个节点= null) {// 对firstNode进行操作在这个例子中,

2024-08-13 18:32:25 413

原创 KMP算法的两种实现形式

这个方式下,模式串匹配失败的回退方式是从本身位置的前一个位置处,获取回退位置。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。这个方式下,模式串匹配失败的回退方式是从本身位置,获取回退位置。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。

2024-08-12 20:56:48 238

原创 Leetcode 8.字符串转换整数 (atoi)

第 3 步:"1337c0d3"(读入 "1337";第 2 步:"1337c0d3"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"0-1" (当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"1337c0d3"(当前没有读入字符,因为没有前导空格)第 1 步:"0-1" (当前没有读入字符,因为没有前导空格)第 1 步:"42"(当前没有读入字符,因为没有前导空格)

2024-08-12 18:07:53 411

原创 状态机和有限状态机的概念及相关内容

例如,在游戏开发中,可以使用有限状态机来控制敌人的行为,如巡逻、追逐、逃跑等状态之间的转换;在自动化控制中,可以使用有限状态机来描述机器的工作流程,如启动、运行、停止等状态之间的转换。有限状态机是状态机的一种特殊形式,它表示有限个状态,以及在这些状态之间的转移和动作等行为的数学模型。有限状态机具有明确的开始状态和结束状态(或接受状态),并且状态的数量是有限的。通过明确系统的状态、事件和转换规则,我们可以构建出清晰、可预测的行为模型,从而提高系统的可靠性和可维护性。

2024-08-12 18:00:43 606

原创 c += c 与 c = c + number 的异同

对于char类型,加法运算后的自动类型转换是隐式的,因此无论是c = c + 32还是c += 32都是合法的。对于byte类型,直接的加法运算可能会导致类型溢出,因此需要显式的类型转换,而+=运算符隐含了这种转换,所以是合法的。

2024-08-11 22:55:46 332

原创 Leetcode 344.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。

2024-08-11 18:05:50 323

原创 异或运算的性质

异或运算有以下三个性质。

2024-08-10 18:34:14 232

原创 位运算在算法中的部分应用

【代码】位运算在算法中的部分应用。

2024-08-10 18:23:49 494

原创 线性表——双链表

在双链表中,每个节点(Node)除了包含存储的数据外,还包含两个引用(或指针):一个指向前一个节点的prev,另一个指向后一个节点的next。这样的设计使得从任一节点都可以向前或向后遍历链表。T data;// 存储的数据// 指向前一个节点的指针// 指向后一个节点的指针// 构造函数双链表是一种由节点组成的链表,其中每个节点都包含三个部分:数据域、指向前一个节点的指针和指向后一个节点的指针。双链表可以从两端开始遍历,支持在链表的两端快速地进行插入和删除操作。int val;

2024-08-10 17:57:54 614

原创 Leetcode 206. 反转链表

给你单链表的头节点head,请你反转链表,并返回反转后的链表。

2024-08-09 22:31:16 402

原创 线性表——单链表

在Java中,单链表中的每个节点通常通过一个内部类来定义,这个内部类包含两个成员:一个是存储的数据(可以是任意类型),另一个是指向下一个节点的引用。T data;// 节点存储的数据// 指向下一个节点的引用// 构造函数// 默认下一个节点为空单链表本身可以看作是一个指向链表第一个节点的引用(或称为头节点),以及可能包含的一些方法,如添加、删除、查找节点等。// 指向链表第一个节点的引用// 构造函数// 初始时链表为空// 添加元素到链表末尾的方法} else {

2024-08-09 14:21:03 391

空空如也

空空如也

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

TA关注的人

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