算法学习
文章平均质量分 77
蒟蒻
BenChuat
菜鸡记录bug
展开
-
Java Collection接口方法整理
【代码】Java Collection接口方法整理。原创 2024-04-12 22:49:51 · 614 阅读 · 0 评论 -
java StringBuilder类方法整理
java StringBuilder类方法整理。原创 2024-04-12 21:06:46 · 571 阅读 · 0 评论 -
java 大数类方法整理
以上是Java大数类BigInteger和BigDecimal常用的方法及其使用示例。根据实际需求选择合适的方法来操作大数,以便处理超出基本数据类型范围的数值。原创 2024-04-12 21:24:08 · 620 阅读 · 1 评论 -
java String字符串常用的方法的整理
字符串常用的方法的整理。原创 2024-04-12 21:03:53 · 561 阅读 · 0 评论 -
java Arrays工具类常用方法整理
Java中的Array工具类提供了许多便捷的方法,用于对数组进行各种操作。原创 2024-04-12 20:50:49 · 436 阅读 · 2 评论 -
java快速幂算法
幂运算是指将一个数自身乘以自身多次的运算,其表达式为ana^nan,其中aaa是底数,nnn是指数。原创 2024-04-12 20:10:00 · 789 阅读 · 0 评论 -
判断素数(质数)java
素数(Prime Number),又称质数是指在大于1的自然数中,除了1和本身之外,不能被其他自然数整除的数。例如,2、3、5、7、11等都是素数。原创 2024-04-12 19:29:14 · 378 阅读 · 0 评论 -
唯一分解定理
因为如果存在两组不同的质因数分解方式,那么它们的最小质因数必然不同,但这是不可能的,因为每个大于1的正整数都有一个最小的质因数。我们将36进行唯一分解定理的质因数分解,首先从最小的质数2开始试除,可以整除,所以36 = 2 * 18。这可以通过反证法来证明,假设存在一个大于1的正整数无法写成质数的乘积,那么这个正整数必然有一个最小的因数,而这个最小的因数必然是质数。唯一分解定理是数论中的一个重要定理,它指出每个大于1的正整数都可以写成一个质数的乘积,并且这种表示方式是唯一的。原创 2024-04-12 18:05:03 · 336 阅读 · 0 评论 -
Java前缀和(洛谷P8772 )
题目要求给定n个整数,求它们两两相乘再相加的和。具体地,对于给定的n个整数a1, a2, …我们可以利用前缀和来解决这个问题。原创 2024-04-12 17:55:54 · 856 阅读 · 0 评论 -
java求最大公约数(GCD)与最小公倍数(LCM)
【代码】java求最大公约数(GCD)与最小公倍数(LCM)原创 2024-04-12 17:20:53 · 353 阅读 · 0 评论 -
java解数独(力扣Leetcode37)
数独部分空格内已填入了数字,空白格用。我们可以使用回溯算法来解决数独问题。原创 2024-03-31 13:39:04 · 601 阅读 · 0 评论 -
javaN皇后(力扣Leetcode51)
N 皇后问题是一个经典的回溯算法问题,研究的是如何将 N 个皇后放置在 N×N 的棋盘上,并且使皇后彼此之间不能相互攻击。在国际象棋中,皇后可以攻击与之处在同一行、同一列或同一斜线上的棋子。给定一个整数 n,表示棋盘的大小,求所有不同的 N 皇后问题的解决方案。每一种解法包含一个不同的 N 皇后问题的棋子放置方案,其中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。原创 2024-03-31 01:01:29 · 800 阅读 · 0 评论 -
java全排列2(力扣Leetcode47)
通过上述代码,我们可以有效地找到包含重复数字的序列的所有不重复的全排列。在回溯过程中,我们需要维护一个当前路径,逐步探索所有可能的选择,并及时剪枝以避免重复。,按任意顺序 返回所有不重复的全排列。给定一个可包含重复数字的序列。原创 2024-03-30 17:19:29 · 392 阅读 · 0 评论 -
java全排列(力扣Leetcode46)
使用ArrayList的contains判断,复杂度为O(n),返回其所有可能的全排列。你可以按任意顺序返回答案。使用used【i】,判断复杂度为O(1)给定一个不含重复数字的数组。原创 2024-03-30 16:25:52 · 498 阅读 · 0 评论 -
java寻找递增子序列(力扣Leetcode491)
找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。通过使用回溯算法,我们可以有效地找到数组中所有满足条件的递增子序列。在回溯过程中,我们需要维护一个当前路径,逐步探索所有可能的选择,并及时剪枝以避免重复。输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]回溯算法的时间复杂度取决于最终的结果数量,而结果数量取决于数组。输出:[[4,4]]原创 2024-03-30 12:03:56 · 811 阅读 · 0 评论 -
java子集2(力扣Leetcode90)
这是一个典型的回溯算法问题,需要找出给定数组的所有可能子集。但与上一题不同的是,数组中可能包含重复元素,因此需要避免重复结果的产生。,返回该数组所有可能的子集(幂集)。解集不能包含重复的子集,且返回的解集中,子集可以按任意顺序排列。给定一个可能包含重复元素的整数数组。原创 2024-03-30 01:05:11 · 305 阅读 · 0 评论 -
java子集(力扣Leetcode78)
数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。可以按任意顺序返回解集。这是一个典型的回溯算法问题,需要找出给定数组的所有可能子集。我们可以通过递归回溯的方法来解决。在回溯搜索的过程中,我们不断做出选择,尝试所有可能的情况,直到满足结束条件。通过回溯算法,我们可以找出给定数组。原创 2024-03-29 23:04:49 · 491 阅读 · 0 评论 -
java复原IP 地址(力扣Leetcode93)
例如:“0.1.2.201” 和 “192.168.1.1” 是有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是无效 IP 地址。有效的 IP 地址由四个整数组成,每个整数位于 0 到 255 之间,且不能含有前导 0。有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在。原创 2024-03-29 22:28:13 · 687 阅读 · 0 评论 -
java分割回文串(力扣Leetcode131)
这是一个典型的回溯算法问题。我们需要从字符串的开头开始,逐步尝试切割出回文子串,并将这些回文子串组合成分割方案。:在这个版本中,使用了双指针的方法来判断子串是否为回文串。:在判断回文串时,这个版本直接使用了字符串的索引范围来进行判断,而不是通过。这样可以避免创建新的字符串对象,减少了内存消耗和时间开销。反转字符串再比较的方法,双指针的方法只需要遍历一次字符串,更加高效。输出:[[“a”,“a”,“b”],[“aa”,“b”]]分割成一些子串,使每个子串都是回文串。所有可能的分割方案。输出:[[“a”]]原创 2024-03-29 20:50:50 · 462 阅读 · 0 评论 -
java组合总和2(力扣Leetcode40)
输入: candidates = [10,1,2,7,6,1,5], target = 8。输入: candidates = [2,5,2,1,2], target = 5。为了避免重复,我们需要在递归搜索的过程中进行剪枝,避免选取相同的数字。这个问题与前面的组合总和问题类似,但是每个数字在每个组合中只能使用。每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。给定一个候选人编号的集合。中所有可以使数字和为。原创 2024-03-29 17:20:53 · 485 阅读 · 0 评论 -
java电话号码的字母组合(力扣Leetcode17)
这是一个典型的回溯算法问题。我们需要根据数字到字母的映射,将给定的数字字符串转换为所有可能的字母组合。输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。通过回溯算法,我们可以找出给定数字字符串能表示的所有字母组合。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”原创 2024-03-29 00:18:57 · 1009 阅读 · 0 评论 -
java回溯算法笔记
回溯用于解决你层for循环嵌套问题,且不剪枝的回溯完全等于暴力搜索。回溯算法模板。原创 2024-03-29 01:15:22 · 438 阅读 · 0 评论 -
java组合总和(力扣Leetcode39)
解释:2 和 3 可以形成一组候选,2 + 2 + 3 = 7。7 也是一个候选, 7 = 7。我们需要在给定的数字数组中寻找所有可能的组合,使其和等于目标数。输入:candidates = [2,3,6,7], target = 7。输入: candidates = [2,3,5], target = 8。的所有不同组合,并以列表形式返回。输入: candidates = [2], target = 1。输出: [[2,2,2,2],[2,3,3],[3,5]]输出:[[2,2,3],[7]]原创 2024-03-29 01:13:38 · 397 阅读 · 0 评论 -
java单词拆分(Leetcode 139)
通过动态规划的思想,我们可以解决这个问题。首先初始化动态规划数组,然后根据状态转移方程进行状态转移,最终判断字符串是否可以被拆分成字典中的单词。原创 2024-03-26 00:55:23 · 896 阅读 · 0 评论 -
java打家劫舍 1 (力扣Leetcode 198)
定义一个一维动态规划数组dp,其中dp[i]表示偷窃到第i个房屋时的最高金额。通过动态规划的思想,我们可以解决这个问题。首先初始化动态规划数组,然后根据状态转移方程进行状态转移,最终返回偷窃到的最高金额。原创 2024-03-26 21:24:12 · 350 阅读 · 0 评论 -
回溯算法java
回溯算法是一种递归算法,用于解决在给定约束条件下寻找所有可能的解的问题。在执行过程中,它尝试找到问题的一个解决方案,并且当它发现当前的解决方案不满足问题的全部要求时,会回溯到前一步,尝试其他的解决方案。原创 2024-03-27 00:39:32 · 677 阅读 · 0 评论 -
java打家劫舍3(力扣Leetcode337)
定义一个长度为 2 的数组dp,其中dp[0]表示不盗窃当前节点的最大收益,dp[1]表示盗窃当前节点的最大收益。通过动态规划的思想,我们可以解决这个问题。首先定义状态,然后根据状态转移方程进行状态转移,最终返回不触动警报的情况下,小偷能够盗取的最高金额。原创 2024-03-26 21:13:24 · 423 阅读 · 0 评论 -
java获取长度
属性/方法适用范围含义length数组获取数组的长度,即数组中元素的个数。length()字符串、数组等对象获取对象的长度或大小。size()集合类获取集合的大小或长度。length是数组的属性,因为数组在创建时就确定了长度,所以直接通过属性获取数组的长度即可。length()是方法,适用于字符串、数组等对象,因为它需要通过方法调用获取对象的长度或大小,长度可能根据对象的内容而变化,需要进行计算。size()是方。原创 2024-03-25 20:11:57 · 272 阅读 · 0 评论 -
java打家劫舍2(力扣Leetcode213)
定义一个一维动态规划数组dp,其中dp[i]表示偷窃第一个房屋到第i个房屋时的最高金额。通过环形动态规划的思想,我们可以解决这个问题。首先将问题分解为两个子问题,然后对每个子问题使用动态规划求解,最终返回两个子问题的最大值。原创 2024-03-26 21:36:35 · 728 阅读 · 0 评论 -
java组合问题(力扣Leetcode77)
组合问题。原创 2024-03-27 00:40:37 · 347 阅读 · 0 评论 -
java动态规划学习笔记
学习笔记目录,这里记录个大纲,详情点链接。原创 2024-03-21 01:01:07 · 676 阅读 · 0 评论 -
java目标和(力扣Leetcode106)
定义一个一维动态规划数组dp,其中dp[i]表示总和为i的表达式的数目。通过动态规划的思想,我们可以解决这个问题。首先计算数组的总和,然后根据状态转移方程进行状态转移,最终返回总和为target的表达式的数目。原创 2024-03-20 21:22:29 · 358 阅读 · 0 评论 -
java简单实现栈
/利用泛型数组作为底层数据结构实现栈//定义默认容量//无参构造函数//添加元素到栈顶//扩容方法//弹出栈顶元素并返回!!!!!");//返回栈顶元素(不弹出)!!!!!");//判断栈是否为空i < size;原创 2023-10-11 18:22:25 · 49 阅读 · 0 评论 -
java 01背包问题(滚动数组优化)
在01背包问题中,我们有一组物品,每个物品有自己的重量和价值,我们需要选择一些物品放入背包中,使得背包的总重量不超过背包容量,且价值最大化。,即只依赖于上一行的结果。因此,我们可以将二维数组优化为一维数组,仅保留一行的信息。通过将二维数组优化为一维数组,我们降低了空间复杂度。在上述二维DP解法中,我们可以观察到在计算。的情况下,背包中所能装下的最大价值。首先,我们定义一个二维数组。个物品,且背包容量为。原创 2024-03-19 00:55:48 · 594 阅读 · 0 评论 -
Set接口
Set接口是 Java 集合框架中用于表示不包含重复元素的集合的接口。Set接口的主要实现类有HashSetTreeSet和EnumSet。原创 2023-11-16 00:06:00 · 50 阅读 · 1 评论 -
JAVA中List、Set、Map接口整理对比
JAVA中List、Set、Map接口整理对比原创 2024-03-16 01:08:53 · 929 阅读 · 0 评论 -
Java组合总和 IV(力扣Leetcode 104)
定义一个一维动态规划数组dp,其中dp[i]表示总和为i的组合数。通过动态规划的思想,我们可以解决这个问题。首先初始化动态规划数组,然后根据状态转移方程进行状态转移,最终返回总和为target的组合数。原创 2024-03-21 20:52:26 · 364 阅读 · 0 评论 -
java零钱兑换(力扣Leetcode322)
定义一个一维动态规划数组dp,其中dp[i]表示凑成金额i所需的最少硬币个数。通过动态规划的思想,我们可以解决这个问题。首先初始化动态规划数组,然后根据状态转移方程进行状态转移,最终返回凑成总金额所需的最少硬币个数。原创 2024-03-22 00:39:20 · 321 阅读 · 0 评论 -
Map接口
的选择取决于具体的需求。一般来说,如果需要高效的插入和查询操作,并可以接受无序性,可以选择。如果需要有序性或按键的自然顺序排序,可以选择。在高并发环境下,可以选择。原创 2023-11-14 22:11:59 · 49 阅读 · 1 评论 -
Java最后一块石头的重量 II(力扣Leetcod1049)
力扣原题有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x原创 2024-03-20 00:57:49 · 779 阅读 · 0 评论