自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java算法】前缀和 下

这段代码实现了一个寻找数组中具有相等数量的0和1的最长子数组长度的算法。具体来说,它使用了前缀和(prefix sum)的概念以及哈希映射(HashMap)来优化查找过程。初始化哈希映射:计算前缀和:检查相等数量的0和1:更新哈希映射:返回结果:这种方法的时间复杂度为O(n),因为我们只遍历数组一次,并且对每个元素执行常数时间的操作。空间复杂度也是O(n),最坏情况下需要存储n个前缀和值。 初始化阶段:开始遍历数组:继续

2024-07-18 16:29:57 1077 7

原创 【Java算法】前缀和 上

这种算法的时间复杂度是 O(n),因为它只需要两次遍历来计算前缀和和后缀和,再加上一次遍历来比较它们,总的操作次数线性于数组长度。这意味着当前位置的前缀和等于上方的前缀和加上左边的前缀和,再加上当前位置的值,最后减去左上方的前缀和以避免重复计算。通过构建和使用前缀和数组,程序能够非常高效地处理任何子矩阵的和的查询,即使面对大量查询也能保持良好的性能。,并读取矩阵的实际数据,忽略第一行和第一列,因为它们将用于构建前缀和数组时的边界条件。数组的前缀和表示,使得每次查询区间和的操作都非常高效。

2024-07-15 10:38:05 1051 3

原创 【Java算法】二分查找 下

段代码实现了一个查找山峰数组中峰值索引的算法。山峰数组是一个先递增后递减的数组,即存在一个索引 使得对于所有的 ,有 ,且对于所有的 ,有 。这个索引 就是峰值的索引。 算法使用了二分查找(Binary Search)的方法来寻找峰值索引。其核心思想是在数组中寻找拐点(即峰值),在该点左侧的值小于右侧的值,在右侧则相反。由于数组是先升后降的,这个拐点就是我们所要找的峰值。具体分析如下:初始化两个指针 和 ,分别指

2024-07-09 19:15:48 1263 28

原创 AI:助力开发者翱翔,而非抢夺其舞台

AI与开发者之间的关系,更像是一种互利共生的伙伴关系。AI通过自动化基础任务,释放了开发者的潜力,使他们能够投身于更有价值的工作,如策略规划、创意设计等,进而促进技术创新和个人成长。在这个进程中,开发者应保持开放的学习态度,主动迎接变革,方能在AI时代中立于不败之地。AI的发展为软件开发领域开辟了全新的天地,它并非意在替代开发者,而是致力于成为他们强大的助手,共同书写科技的未来篇章。开发者应把握时机,与AI并肩作战,开启一场充满无限可能的职业冒险,共同探索未知的科技边界。

2024-07-09 11:40:24 3156 126

原创 【Java算法】二分查找 上

二分查找适用于任何已排序的数据集合,如数组、列表等。它不适用于无序的数据结构,因为在这种情况下,算法无法保证每次都能将搜索空间减半。此外,二分查找也可以扩展用于查找特定条件下的元素,例如查找目标值的最左侧位置或最右侧位置,或者在没有精确匹配的情况下找到最近的元素。

2024-07-08 15:12:39 978 5

原创 【Java算法】滑动窗口 下

​​ 结合哈希表(Map)来高效地统计窗口内不同水果的种类数量。以下是详细分析:初始化:创建一个空的哈希表 用来存储每种水果的数量,初始化左右指针 和 为 0,同时初始化结果变量 为 0,用于记录最大的水果段长度。扩展右边界:右指针 逐渐向右移动,每移动一步,就在哈希表 中增加对应水果的数量。这代表尝试将新的水果加入当前的采摘窗口。处理超过两种水果的情况:使用 循环检查

2024-06-24 08:00:00 854 7

原创 【Java算法】滑动窗口 上

滑动窗口算法是一种处理数组或序列数据的常用技巧,尤其适用于解决涉及寻找特定条件的子数组或子序列问题。它的核心思想是通过两个指针(通常称为窗口的左右边界)来界定一个可变长度的“窗口”,并通过移动窗口来覆盖整个数据范围,从而高效地进行动态的数据分析和处理。

2024-06-21 08:00:00 1257 115

原创 【进程调度的基本过程】初步认识进程和线程的区别与联系:计算机是如何工作的

线程是进程中执行运算的最小单位,是处理器调度的基本单位。它可以并发执行多个任务,而无需创建多个进程。轻量级:相比于进程,创建和切换线程的开销较小,因为线程共享其所在进程的资源和上下文环境。并发与并行:线程使得程序能够在单个或多个处理器上同时执行多个任务,实现并发性。在多核处理器上,线程可以真正并行运行。进程与线程的层级关系:进程构成了资源分配的逻辑容器,是操作系统中程序执行的独立实体,可以视为一个或多个线程的集合体。每个进程至少包含一个线程,即主线程,负责执行程序的初始入口点。

2024-06-08 12:38:00 1265 118

原创 【MySQL数据库】索引与事务

在MySQL中,索引被实现为一种平衡的树形结构(通常是B+树),这种结构允许快速查找、插入和删除操作。索引中存储了表中一列或多列的值(索引键)和这些值对应的行在表中的物理位置(通常是行ID或指针)。查询过程:当执行一个查询时,数据库首先查看索引,而不是直接遍历整张表。通过索引,数据库可以迅速定位到包含目标值的行,然后再通过行ID或指针访问实际的行数据。​​优点缺点使用场景要考虑对数据

2024-06-02 09:18:25 1647 113

原创 【Java算法】双指针(下)

排序是该算法的关键预处理步骤,因为它允许我们基于三角形不等式(任意两边之和大于第三边)高效地检查组合。双指针技术:在已排序数组上应用双指针( 和 ),有效地遍历所有可能的两边组合,以确定能与当前固定最长边(由索引 指示的元素)构成三角形的对数。累计计数:当 成立时,意味着当前的 和 位置的元素与 位置的元素可以组成一个三角形。由于 到 之间的所有元素对(包括 和 本身)与 组成的三角形都满足条

2024-05-30 12:23:53 1267 134

原创 【MySQL数据库】CRUD 增 删 改 查 超详解,有这一篇就够了!

经过一段时间对MySQL增删查改(Insert, Delete, Select, Update)四大核心操作的学习与实践,我深刻体会到了数据库管理的复杂性和艺术性。以下是对这一学习过程的深入反思,旨在总结经验,明确改进方向,不断提升数据库操作的效率与安全性。增(Insert)数据验证的重要性。

2024-05-24 00:18:13 1669 144

原创 【Java算法】双指针(上)

这段代码虽然涉及到“双指针”概念,但其实质上是利用了“快慢指针”(Floyd's cycle-finding algorithm,也称作龟兔赛跑算法)的思想来检测一个数字运算过程中的循环,而非传统意义上的双指针遍历数据结构。这段代码高效地解决了“容器盛水最大值”问题,通过双指针策略从两端向中间逼近,减少了不必要的遍历,体现了动态规划中“空间换时间”的思想,是算法优化的一个典型示例。遍历完整个数组后,所有非零元素已经按照原来的相对顺序被移动到了数组的前部,而数组的末尾则是连续的0。具体来说,它将输入整数。

2024-05-18 09:53:09 1651 128

原创 【MySQL数据库】初步认识数据库,实现基本操作

数据库可以被形象地比喻为电子化的文件柜,但它远比传统文件管理更加高效和灵活。它不仅仅是一个存放数据的地方,更是一个包含了一系列规则、方法和程序的综合系统,用于确保数据的准确、安全、高效访问。MySQL作为一款久经考验的数据库系统,不仅在过去几十年里证明了自己的价值,而且在面对未来技术挑战时也展现出强大的适应性和创新能力。无论是对于初学者还是经验丰富的数据库管理员,深入学习和掌握MySQL都是一项值得投资的技能。

2024-05-14 12:10:03 2269 108

原创 Java 【数据结构】 哈希(Hash超详解)HashSet&HashMap【神装】

哈希桶机制通过将冲突的元素组织在一起,而非直接覆盖,保证了哈希表的灵活性和高效性。它允许哈希表在面对大量数据时仍能保持较好的性能,尤其是在冲突较多的情况下。通过调整哈希函数、负载因子和适时的扩容,可以进一步优化哈希表的效率。在Java中,HashMap和HashSet就是使用哈希桶来实现的,它们是Java集合框架中非常重要的组件。Java中的HashSet是一个实现了Set接口的集合类,它提供了一种存储不可重复元素的高效数据结构。

2024-05-12 09:24:57 5769 111

原创 Java 【数据结构】 TreeSet&TreeMap(二叉搜索树详解)【神装】

每个节点都有一个键(Key)和两个指向其他节点的指针(左子指针和右子指针)。任意节点的左子树中的所有键都小于该节点的键。任意节点的右子树中的所有键都大于该节点的键。左右子树也都是二叉搜索树。不存在键值相等的节点。int val;Node left;Node right;// 构造函数、插入方法、查找方法、删除方法等...TreeSet是Java集合框架中的一种有序集合,它实现了Set接口,因此具有不允许重复元素的特性。

2024-05-08 09:11:13 4298 107

原创 无处不在的AI:被科技巨头盯上的Agent智能体的崭新时代

在科技飞速发展的时代,Agent AI 智能体如同一颗冉冉升起的明星,吸引着无数人的目光。它是人类智慧与科技的结晶,正以惊人的速度改变着我们的世界。Agent AI 展现出了强大的能力和无限的潜力。它能够快速处理海量的数据,从中挖掘出有价值的信息,为决策提供有力的支持。它可以在各种复杂的环境中自主行动,完成各种任务,展现出了极高的效率和准确性。它的出现,让我们看到了未来的无限可能。然而,Agent AI 也带来了一些挑战和担忧。它的发展可能会导致一些工作岗位的消失,引发就业结构的调整。

2024-05-08 09:10:21 1531 38

原创 Java 【数据结构】常见排序算法实用详解(下) 冒泡排序/快速排序/归并排序/非基于比较排序【贤者的庇护】

Java 【数据结构】常见排序算法实用详解(上) 插入排序/希尔排序/选择排序/堆排序【贤者的庇护】在本篇内容我们将紧跟前篇内容,进一步学习冒泡排序,快速排序,归并排序以及非基于比较排序。人的成长要接受四个方面的教育:父母、老师、书籍,社会。有趣的是,后者似乎总是与前面三种背道而驰。在学习了冒泡排序、快速排序、归并排序以及基于非比较的排序算法之后,我们可以对这些排序算法进行总结和反思。冒泡排序。

2024-05-04 18:51:24 2543 70

原创 Java 【数据结构】常见排序算法实用详解(上) 插入排序/希尔排序/选择排序/堆排序【贤者的庇护】

在学习了插入排序、希尔排序、堆排序和选择排序之后,我对这些经典的排序算法有了更深入的理解和反思。插入排序插入排序是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。简单易懂,稳定,对于小规模数据或者基本有序的数据效果较好。尽管插入排序简单,但对于大规模数据的排序效率较低,时间复杂度为 O(n^2)。在数据量较大时,不太适用。了解和掌握各种排序算法的原理、特点和实现方法,能够在实际应用中选择合适的排序算法,并对算法进行优化,提高程序的性能。

2024-05-03 16:05:08 1806 91

原创 创新之光:AIGC技术引领智能计算新浪潮

进入21世纪,随着计算机硬件性能的提升和数据驱动方法的兴起,人工智能(AI)与通用计算(GC)的融合已经成为引领技术创新的主要驱动力之一。而在这个融合的浪潮中,AIGC技术(Artificial Intelligence and GeneralComputing)如一束创新之光,正在引领着智能计算的新浪潮。AIGC技术是指将人工智能与通用计算相结合,以实现更高效、更智能的计算方式。在传统的计算中,通用计算负责执行各种指令和任务,而人工智能则处理特定的智能任务,如语音识别、图像识别等。

2024-05-02 12:41:58 1091 23

原创 【Java】 对象的比较【比较器】

Java中,对象之间的比较是开发中经常遇到的任务之一。有三种主要的比较方式:基于比较器比较、基于Comparable接口类的比较以及基于对象的比较(通常是通过重写equals()方法)。实现了Comparator接口的比较器类,可以定义多种不同的比较规则。适用于对外部库的类进行比较或需要多种不同比较规则的情况。基于Comparable实现了Comparable接口的类,可以在类内部定义对象之间的比较规则。

2024-05-02 10:00:00 913 39

原创 Java 【数据结构】 优先级队列(PriorityQueue)和堆(Heap)【神装】

Java中的PriorityQueue和堆这一主题时,我掌握了如何使用PriorityQueue类来实现堆的基本操作,包括插入和删除。这些操作对于解决许多实际问题都非常有用,尤其是在需要高效管理元素优先级的情况下。

2024-05-01 10:00:00 1594 60

原创 Java 【数据结构】 二叉树(Binary_Tree)【神装】

首先,我意识到了数据结构在编程中的关键性,二叉树作为其中的重要一环,对算法设计和问题解决都有着深远的影响。深入理解二叉树的基本概念,如节点、根节点、子节点等,为我理解二叉树结构和算法打下了坚实的基础。掌握了常见的操作和遍历算法,如插入节点、删除节点以及深度优先遍历和广度优先遍历,这些都是对树形结构理解和应用至关重要的。

2024-04-23 21:30:12 1648 45

原创 Java 【数据结构】 栈(Stack)和队列(Queue)【神装】

在学习 Java 中的栈(Stack)和队列(Queue)这两种经典数据结构时,我深刻体会到它们的重要性和应用广泛性。通过掌握栈和队列的基本操作,如入栈、出栈、入队、出队,我加深了对数据结构的理解。在实践中,我意识到需要关注空间复杂度和时间复杂度的问题,尤其在处理大规模数据集时。异常处理也是学习中的重要环节,确保程序能够正常处理各种边界情况。

2024-04-11 10:00:00 2213 21

原创 Java 【数据结构】 LinkedList【神装】

说明LinkedList是Java中提供的双向链表实现的数据结构。它实现了List接口,因此可以像操作普通的列表一样对其进行操作,同时也支持队列和栈的操作。与ArrayList相比,LinkedList在插入和删除元素时具有更好的性能,因为它不需要移动其他元素。但是在访问特定位置的元素时,LinkedList的性能较差,因为需要从头或尾开始遍历链表。总的来说,LinkedList适合频繁进行插入和删除操作的场景。注意LinkedList实现了List接口LinkedList。

2024-04-10 10:00:00 1335 19

原创 Java 数据结构 ArrayList【神装】

在学习Java中的ArrayList时,我深刻体会到它的灵活性和便利性,能够动态调整大小、支持高效的随机访问,而且泛型支持和丰富的操作方法使其具有广泛的应用场景。然而,在实际应用过程中,我发现在处理大规模数据时,ArrayList的插入和删除操作效率较低,可能会导致性能下降和空间浪费。此外,考虑到线程安全性和选择合适的数据结构也是使用ArrayList时需要注意的问题。

2024-04-04 16:33:42 290 17

原创 Java 包装类&初识泛型

在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。包装类用于将基本数据类型转换为对象。它们允许在对象上执行额外的操作,例如将基本数据类型作为参数传递给方法,或者在集合类中存储基本数据类型。

2024-04-04 10:00:00 1108 15

原创 Java 认识异常

通过学习和实践 Java 中的异常处理,我深刻认识到异常处理不仅是代码中的一部分,更是一种思维方式,一种面对问题和挑战的态度。

2024-03-19 10:00:00 1632 27

原创 Java 初步认识String 类

由于String的不可更改特性,为了方便字符串的修改,Java中又提供和类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅。

2024-03-13 09:30:00 1663 32

原创 Java 抽象类和接口

基础详解抽象类与接口,主要解释了他们之间的特性,加深理解

2024-03-10 10:00:00 1080 52

原创 Java 封装 继承 多态(深入理解)

详细解析了面向对象编程(java)的三大特性:封装继承和多态(超详细)收藏精品,帮助加深理解

2024-03-08 10:00:00 3638 46

原创 Java 类和对象

主要概述了java这一门面向对象的语言的类和对象,算是java语法的入门知识

2024-03-01 19:32:44 1802 59

原创 VS 2022 实用调试技巧

调试⼀个程序,⾸先是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码,重新测试。

2024-02-03 15:37:26 926 47

原创 (c语言)数组和函数的实践:扫雷游戏 思路与逻辑

关于简易版“扫雷小游戏”的思路与逻辑分析

2024-01-31 17:29:49 1130 29

空空如也

空空如也

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

TA关注的人

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