算法
文章平均质量分 83
白夜的月亮
划水也得有资本
展开
-
5大数据结构
解决思路:使用哈希思想,可以借助集合(Set)来模拟哈希表,遍历数组,将数字放入集合中,如果集合中已经存在该数字,则从集合中移除该数字,最后集合中剩余的两个数字就是只出现一次的数字。解决思路:使用哈希思想,可以借助数组来模拟哈希表,遍历字符串,统计每个字符出现的次数,然后再次遍历字符串,找到第一个出现次数为1的字符,返回其索引。解决思路:使用哈希思想,可以借助集合(Set)来模拟哈希表,遍历数组,将数字放入集合中,如果集合中已经存在该数字,则找到了重复的数字。原创 2023-11-18 21:53:59 · 525 阅读 · 0 评论 -
3大经典算法思想
问题描述:给定一个按照升序排列的整数数组nums,和一个目标值target。如果target在数组中存在,则返回它的第一个和最后一个位置,否则返回[-1, -1]。解决思路:使用分治算法,先使用二分查找找到target的位置,然后分别向左和向右进行扩展,直到找到target的第一个和最后一个位置。时间复杂度:O(logn),空间复杂度:O(1)。原创 2023-11-18 21:27:44 · 170 阅读 · 0 评论 -
图算法初级
接下来,使用一个循环来选择最小的边,并判断是否形成环,如果不形成环,则将该边加入到最小生成树中,并合并两个顶点的子集。它通过不断选择当前最短路径中距离起点最近的顶点,并更新其他顶点的距离,来找到起点到其他顶点的最短路径。它通过不断选择与当前生成树相连的最小权值的边,并将其添加到生成树中,来构建最小生成树。它通过不断更新每对顶点之间的最短路径长度来计算任意两个顶点之间的最短路径。一个经典的例子是求解从起点A到其他顶点的最短路径。一个经典的例子是求解任意两个顶点之间的最短路径。一个经典的例子是求解最小生成树。原创 2023-11-15 17:18:32 · 116 阅读 · 0 评论 -
初级查找算法
二分查找是一种针对已排序的数据结构的查找算法,通过将目标元素与中间元素进行比较,不断缩小查找范围,直到找到目标元素或查找范围为空。深度优先搜索是一种对于树或图等结构的查找算法,从根节点开始一直遍历到叶子节点,直到找到目标元素或遍历完所有节点。顺序查找是一种简单直接的查找算法,逐个元素依次查找,直到找到目标元素或遍历完整个数据结构。举例:假设有一个有序整数数组arr,我们要查找是否存在目标元素target。举例:假设有一个整数数组arr,我们要查找是否存在目标元素target。然后,我们定义了一个。原创 2023-11-15 16:31:08 · 166 阅读 · 0 评论 -
二叉树代码
下面是用Java语言实现二叉树的代码,包括遍历(层序、前序、中序、后序)、插入、删除、查找,并加上了注释。类包括了层序遍历、前序遍历、中序遍历、后序遍历的方法实现,以及插入、删除、查找节点的方法实现。类中,我们创建了一个二叉树对象。这个示例代码中,我们定义了。,演示了如何使用这些方法。类表示二叉树的节点,原创 2023-10-23 11:32:12 · 78 阅读 · 0 评论 -
数据结构八大排序Java源码
数据结构八大排序原创 2023-10-12 11:11:38 · 968 阅读 · 0 评论 -
KMP算法
n),其中m为模式串的长度,n为文本串的长度。相比于朴素的字符串匹配算法,KMP算法通过利用已匹配的前缀信息,避免了一些不必要的比较,从而提高了匹配的效率。KMP算法的时间复杂度为O(m +原创 2023-09-22 10:57:37 · 165 阅读 · 0 评论 -
Java反射机制、枚举、迭代器、事务注解、HashMap浅讨
反射是Java语言中一种强大的机制,它允许程序在运行时动态地获取和操作类的信息、对象的字段和方法。通过反射,我们可以在运行时检查和修改类的结构,调用对象的方法,甚至可以创建新的对象。反射提供了一种灵活的方式来实现动态的功能和增强代码的复用性。反射的使用需要谨慎,因为它会牺牲一定的性能和安全性。在实际开发中,应该根据具体的需求来决定是否使用反射,避免滥用。同时,了解反射的原理和使用场景,可以帮助我们更好地理解和设计Java程序。原创 2023-09-22 09:27:08 · 102 阅读 · 0 评论 -
算法(三)
是Java中的一个表达式,用于获取Map中指定键的值,如果键不存在则返回默认值。在这个表达式中,sum是作为键,0是作为默认值。如果sum这个键存在于map中,则返回与该键对应的值加1;如果sum这个键不存在,则返回默认值0加1。以前觉得算法可无聊了,突然发现,这玩意挺上瘾啊,虽然很菜,但很解困啊🍚🍚🍚🍚🍚🍚🍚🍗🍗🍗🍗🍭🍭🍭🍭🍭🍭🍭🍭🧃🧃🧃🧃🧃🍵🍵🍵🍵🍵🍵💫💫💫💫😋😋😋😋😋😋。当我们需要存储一组元素,并且要求元素不重复时,可以使用Set集合。原创 2023-09-21 21:44:49 · 246 阅读 · 0 评论 -
算法----数组常见知识点
当遇到右括号时,检查栈顶元素是否为对应的左括号,如果是,则弹出栈顶元素,继续遍历;例如,三维数组由一系列二维数组组成,四维数组由一系列三维数组组成,以此类推。不规则数组:不规则数组是指每个一维数组的长度可以不同的二维数组。动态数组(ArrayList):动态数组是一种可以自动调整大小的数组,它可以根据需要动态添加或删除元素。动态初始化:动态初始化是在声明数组时只指定数组的类型和大小,并没有为数组元素赋初值。动态初始化后,数组的每个元素的初始值将根据数据类型的默认值进行赋值,如int类型默认为0。原创 2023-09-21 10:54:23 · 138 阅读 · 0 评论 -
算法(二)——数组章节和链表章节
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。原创 2023-09-19 11:40:28 · 139 阅读 · 0 评论