多语言LeeCode的题解
文章平均质量分 80
lanbing
思从深,行从简
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【牛客/LeeCode】[双指针/动态规划]BM94 接雨水问题
文章摘要:本文介绍了三种解决"接雨水"问题的算法方案。该问题要求计算给定柱子高度数组能接多少雨水。方案一使用双指针法,时间复杂度O(n),空间复杂度O(1);方案二采用动态规划,预处理左右最大值数组,时间O(n)但空间O(n);方案三利用单调栈来跟踪可能形成"凹槽"的柱子。三种方案均提供Golang、Java和Python实现代码,适用于不同场景需求。双指针法最优,动态规划思路直观,单调栈适合处理特定模式数据。原创 2025-09-23 22:38:15 · 1230 阅读 · 0 评论 -
【LeeCode】【栈】20. 有效的括号
本文介绍了判断括号字符串有效性的算法题解。题目要求验证字符串中的括号是否正确匹配闭合,包括三种括号类型:小括号、中括号和大括号。解题采用栈结构,遍历字符串时左括号入栈,右括号则与栈顶元素匹配。若不匹配则直接返回false,否则弹出栈顶元素。最终栈为空则说明所有括号正确闭合。文章给出了Golang、Java和Python三种语言的实现代码,时间复杂度为O(n),空间复杂度为O(n+6)。该算法能有效处理各种括号匹配情况,包括示例中的正确和错误用例。原创 2025-09-23 20:43:32 · 562 阅读 · 0 评论 -
【牛客】【二叉树】BM35 判断是不是完全二叉树
本文介绍了判断完全二叉树的三种方法:层次遍历、深度优先搜索和节点编号统计。完全二叉树的定义是除最后一层外,其他层节点数达到最大值,且最后一层节点集中在左侧。方法一通过层次遍历检测空节点后是否出现非空节点;方法二利用完全二叉树的节点编号特性(左子节点=2i,右子节点=2i+1)进行验证;方法三统计节点总数和最大编号是否相等。三种方法的时间复杂度均为O(n),适用于不同编程语言实现。文中提供了Go、Java、Python等语言的代码示例,并包含测试用例验证算法正确性。原创 2025-09-23 16:52:17 · 612 阅读 · 0 评论 -
【牛客】【二叉树】BM36 判断是不是平衡二叉树
本文介绍了判断二叉树是否为平衡二叉树的算法。平衡二叉树要求左右子树高度差不超过1且子树也平衡。算法采用递归方式,计算子树高度时若发现不平衡(高度差>1)则返回-1标记。时间复杂度O(n),空间复杂度O(h)。提供了Go和Java两种实现,其中Go版本通过辅助函数计算高度,Java版本使用类变量标记平衡状态。测试用例验证了平衡和非平衡二叉树的情况。原创 2025-09-23 13:22:58 · 612 阅读 · 0 评论 -
【双指针】BM90 最小覆盖子串
给出两个字符串 s 和 t,要求在 s 中找出最短的包含 t 中所有字符的连续子串。数据范围:0≤∣S∣,∣T∣≤10000,保证s和t字符串中仅包含大小写英文字母。时间复杂度:O(n),每个字符最多被访问两次(一次由右指针,一次由左指针)。满足条件的子串可能有很多,但是题目保证满足条件的最短的子串唯一。要求:进阶:空间复杂度 O(n) , 时间复杂度 O(n)输入:"XDOYEZODEYXNZ","XYZ"输入:"abcAbA","AA"找出的最短子串为"YXNZ"返回值:"YXNZ"原创 2025-09-22 12:32:21 · 523 阅读 · 0 评论 -
【动态规划】【LeeCode】[中]1143. 最长公共子序列长度
摘要: 题目要求计算两个字符串的最长公共子序列(LCS)长度。采用动态规划方法,构建二维数组dp[i][j]表示text1[0:i]和text2[0:j]的LCS长度。状态转移分两种情况:若当前字符相等,则dp[i][j] = dp[i-1][j-1] + 1;否则取max(dp[i-1][j], dp[i][j-1])。边界条件为i或j为0时值为0。最终dp[m][n]即为结果。时间复杂度O(mn),空间复杂度O(mn)。适用于字符串长度≤1000的场景。原创 2025-09-21 22:07:42 · 1086 阅读 · 0 评论 -
【动态规划】【牛客】[中]BM65. 最长公共子序列(二)
本文介绍了求解两个字符串最长公共子序列(LCS)的算法,重点分析了动态规划解法。当任一字符串为空时直接返回"-1"。核心步骤包括:1)构建二维DP表记录子串匹配情况;2)通过状态转移方程填充DP表(字符匹配时左上值+1,否则取左/上较大值);3)从DP表右下角回溯构造LCS字符串。文章提供了Golang、Java和Python三种实现,时间复杂度O(n²),空间复杂度O(n²)。示例演示了"abcde"和"ace"的DP表构建过程,最终得到LCS&原创 2025-09-21 21:45:25 · 1169 阅读 · 0 评论 -
【动态规划】【牛客】BM66 最长公共子串
摘要:该题要求找出两个字符串的最长公共子串。推荐使用动态规划解法,定义dp[i][j]表示以str1[i]和str2[j]结尾的公共子串长度,状态转移方程为:若字符相等则dp[i][j]=dp[i-1][j-1]+1,否则为0。遍历过程中维护最大值和结束位置,最后截取子串。时间复杂度O(mn),空间复杂度O(mn)。枚举法虽然直观但会超时。给出了Go、Java和Python的实现代码。原创 2025-09-21 18:58:09 · 716 阅读 · 0 评论 -
【滑动窗口】无重复字符的最长子串
摘要 题目要求找出字符串中不含重复字符的最长子串长度。采用滑动窗口算法,通过双指针维护当前子串区间,右指针扩展窗口,遇到重复字符时移动左指针,确保窗口内无重复。使用哈希表记录字符位置,时间复杂度O(n),空间复杂度O(字符集大小)。提供Go、Python、Java等实现示例,如Go中利用map或数组标记字符,动态更新窗口并记录最大长度。例如,输入"abcabcbb"时,最长无重复子串"abc"的长度为3。原创 2025-09-19 20:02:52 · 489 阅读 · 0 评论 -
【动态规划】最长回文子串
本文介绍了两种寻找字符串中最长回文子串的算法。第一种是中心扩展法,通过枚举每个可能的回文中心向两侧扩展,时间复杂度O(n²),空间复杂度O(1)。第二种是动态规划法,利用二维数组存储子串回文状态,同样时间复杂度O(n²)但空间复杂度O(n²)。两种方法都通过示例代码(Golang实现)展示了具体实现,其中中心扩展法更节省空间,是推荐解法。文章包含题目描述、解题思路、复杂度分析和完整代码实现,适合算法学习者参考。原创 2025-09-18 23:37:30 · 549 阅读 · 0 评论 -
【二叉树】BM24 二叉树的中序遍历
数据范围:树上节点数满足 0≤n≤1000 ,树上每个节点的值满足 −1000≤val≤1000。给定一个二叉树的根节点root,返回它的中序遍历结果。进阶:空间复杂度 O(n) ,时间复杂度 O(n)树中节点数目在范围 [0, 100] 内。树中的节点的值在[-100,100]以内。输入:{1,2,#,#,3}返回值:[2,3,1]输入:{1,#,2}原创 2025-08-13 22:57:14 · 455 阅读 · 0 评论 -
[二分查找]BM18 二维数组中的查找
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:7, [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]输入:3, [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]数据范围:矩阵的长宽满足 0≤n,m≤500 , 矩阵中的值满足 0≤val≤109。原创 2025-08-13 22:30:03 · 740 阅读 · 0 评论 -
【模拟】BM98 螺旋矩阵
从最上面开始遍历,到边的时候就向下遍历,然后向左遍历,最后向上遍历,当一圈遍历结束的时候则进入里圈进行遍历。给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。数据范围:0≤n,m≤10 ,矩阵中任意元素都满足 ∣val∣≤100。要求:空间复杂度 O(nm) ,时间复杂度 O(nm)输入:[[1,2,3],[4,5,6],[7,8,9]]返回值:[1,2,3,6,9,8,7,4,5]原创 2025-08-13 20:55:20 · 655 阅读 · 0 评论 -
【动态规划】BM69 把数字翻译成字符串
对于普通数字1-9,译码方式只有一种,但是对于11-19,21-26,译码方式有可选择的两种方案,因此我们使用动态规划将两种方案累计。有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。进阶:空间复杂度 O(n) ,时间复杂度 O(n)说明:2种可能的译码结果(”ab” 或”l”)输入:"31717126241541717"现在给一串数字,返回有多少种可能的译码结果。数据范围:字符串长度满足 0<n≤90。说明:192种可能的译码结果。原创 2025-08-13 19:02:51 · 428 阅读 · 0 评论 -
[动态规划]BM64 最小花费爬楼梯
说明:你将从下标为1的台阶开始,支付5 ,向上爬两个台阶,到达楼梯顶部。6.支付 1 ,向上爬一个台阶,到达楼梯顶部。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。输入:[1,100,1,1,1,90,1,1,80,1]1.支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。2.支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。3.支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。4.支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。5.支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。原创 2025-08-08 21:56:28 · 730 阅读 · 0 评论 -
[动态规划]BM63 跳台阶
如果从第n个台阶进行下台阶,下一步有2种可能,一种走到第n-1个台阶,一种是走到第n-2个台阶。所以f[n] = f[n-1] + f[n-2]. 那么初始条件了,f[0] = f[1] = 1。所以就变成了:f[n] = f[n-1] + f[n-2], 初始值f[0]=1, f[1]=1,目标求f[n] ,看到这是不是有种很熟悉的感觉,这就是求斐波拉契数列。说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。要求:时间复杂度:O(n) ,空间复杂度: O(1)原创 2025-08-08 21:32:37 · 236 阅读 · 0 评论 -
【动态规划】BM62 斐波那契数列
动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。我们也可以根据公式倒推,因为F(n)=F(n−1)+F(n−2) ,而F(n−1) 与 F(n−2)又可以作为子问题继续计算,因此可以使用递归。fib(x)=1 (当x=1,2),原创 2025-08-08 20:38:37 · 910 阅读 · 0 评论 -
【模拟】BM100 设计LRU缓存结构
输入:["set","set","get","set","get","set","get","get","get"],[[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]],2。//将(3,3)插入缓存,缓存容量是2,故去掉某尾的key-value,缓存是{"3"=3,"1"=1},set操作返回"null"返回值:["null","null","1","null","-1","null","-1","3","4"]s.set(2,2);s.set(1,1);原创 2025-08-08 09:47:51 · 1141 阅读 · 0 评论 -
[模拟]BM101 设计LFU缓存结构
但是缓存结构中最多放K条记录,如果新的第K+1条记录要加入,就需要根据策略删掉一条记录,然后才能把新记录加入。这个策略为:在缓存结构的K条记录中,哪一个key从进入缓存结构的时刻开始,被调用set或者get的次数最少,就删掉这个key的记录;输入:[[1,1,1],[1,2,2],[1,3,2],[1,2,4],[1,3,5],[2,2],[1,4,4],[2,1]],3。若opt=2,接下来一个整数x,表示get(x),若x未出现过或已被移除,则返回-1。因此第二次询问的答案为-1。返回值:[4,-1]原创 2025-07-26 17:49:28 · 737 阅读 · 0 评论 -
【数组】BM99 顺时针旋转矩阵
再将每个一维数组进行逆序翻转得到[[7,4,1],[8,5,2],[9,6,3]]。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。输入:[[1,2,3],[4,5,6],[7,8,9]],3。返回值:[[7,4,1],[8,5,2],[9,6,3]]输出为:[[1,4,7],[2,5,8],[3,6,9]]要求:空间复杂度 O(N^2),时间复杂度 O(N^2)进阶:空间复杂度 O(1),时间复杂度 O(N^2)原创 2025-07-24 18:25:09 · 396 阅读 · 0 评论 -
【数组】BM97 旋转数组
循环右移相当于从第m个位置开始,左右两部分视作整体翻转。即abcdefg右移3位efgabcd可以看成AB翻转成BA(这里小写字母看成数组元素,大写字母看成整体)。既然是翻转我们就可以用到reverse函数。输入: 6,2,[1,2,3,4,5,6]返回值:[5,6,1,2,3,4]输入:4,0,[1,2,3,4]返回值:[1,2,3,4]原创 2025-07-24 16:18:05 · 407 阅读 · 0 评论 -
[Leecode]1374. 生成每种字符都是奇数个的字符串
"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ohhh" 和 "love"。"xy" 是一个满足题目要求的字符串,因为 'x' 和 'y' 各出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ag" 和 "ur"。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。个字符的字符串,其中每种字符在该字符串中都恰好出现。原创 2025-07-22 19:42:33 · 531 阅读 · 0 评论 -
[LeeCode] 48. 旋转图像
这三种方法,只有第二种符合咱们本题的要求,因为本题明确要求用原地旋转实现。但是我们今天还是按顺序讲解,主要是讲完第一种实现方案会对大家了解第二种有帮助。一、使用辅助数组(这是最容易想到和最容易实现的,但是它并符合咱们的题目要求)。我们需要使用一个和 matrix 大小相同的辅助数组。时间复杂度:O(N2),其中 N 是 matrix 的边长。旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。二、原地旋转 (这是最符合本题要求的实现方式)使用另一个矩阵来旋转图像。原创 2025-07-12 15:32:24 · 971 阅读 · 0 评论 -
[LeeCode]1886. 判断矩阵经轮转后是否一致
数组的长度 n=len(mat),0<=x, y< n, 对于坐标[x, y],计算其旋转后的坐标[x', y'],则只需要比较mat[x][y]与target[x'][y']是否相等。可以发现第一行变最后一列,即:y' = n-x-1,数字顺序没有变化(行第n个变列第n个),因此:x' = y,由此可得出转换公式为:[x, y] -> [y, n-x-1],我们可以模拟 4 次将 mat 90 度顺时针旋转的操作,并在每次旋转操作后与 target 比较。原创 2025-07-11 22:52:24 · 878 阅读 · 0 评论 -
[LeeCode]2614. 对角线上的质数
质数是指大于1的自然数,且仅能被1和它自身整除的数。例如,2、3、5、7等都是质数,因为它们无法被其他自然数整除(除了1和自身)。而4、6、8等则不是质数,因为它们可以被其他数整除(如4能被2整除)。原创 2025-07-11 21:39:58 · 667 阅读 · 0 评论 -
【双指针】BM93 盛水最多的容器
给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水。3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1。利用双指针和贪心思想,依次构成不同的容器大小,求出最大容器值。2.当n小于2时,视为不能形成容器,请返回0。输入:[1,7,3,2,4,5,8,2,7]输入:[5,4,3,2,1,5]原创 2025-07-09 17:25:55 · 520 阅读 · 0 评论 -
[双指针]BM92 最长无重复子数组
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。说明:最长子数组为[2,3,4,8,99]输入:[1,2,3,1,2,3,2,2]输入:[2,2,3,4,8,99,3]说明:[2,3,4,5]是最长子数组。说明:[2,3,4]是最长子数组。说明:最长子数组为[1,2,3]输入:[2,2,3,4,3]输入:[2,3,4,5]原创 2025-07-08 23:03:32 · 542 阅读 · 0 评论 -
[LeeCode]给小朋友们分糖果1
总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0)。总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1)。我们需要找出所有满足以下两个条件的三元组。颗糖果,请你返回满足此条件下的。原创 2025-07-08 22:20:27 · 707 阅读 · 0 评论 -
[LeeCode ]分糖果2
假设第一步有round轮,第一步第i(0<=i<round)轮第j(1<=j<=num_people>>)个人可以获得的糖果是确定的:i * num_people + j,因此可以得知第一步需要糖果数为:f(round)=(num_peopleround)(num_people*round+1)/2。只要求出满足f(x)<=candies<f(x+1)的x值,即可求出第一步后,每个人获得的糖果数,第二步只需要按照第round+1轮,正常分配剩余的糖果即可。时间复杂度:O(N),计算 N 个人的糖果数量。原创 2025-07-08 21:54:42 · 781 阅读 · 0 评论 -
【Leecode 贪心】如何吃到最多口味的糖果
我们只需要统计一下糖果口味数 s ,然后和n/2 做一下比较,如果s 大于n/2 则最多可以吃n/2 种糖果口味,如果s 小于 n/2 ,则最多可以吃 s 种口味。Alice 只能吃 4 / 2 = 2 枚糖,不管她选择吃的种类是 [1,2]、[1,3] 还是 [2,3],她只能吃到两种不同类的糖。Alice 只能吃 4 / 2 = 2 枚糖,尽管她能吃 2 枚,但只能吃到 1 种糖。Alice 只能吃 6 / 2 = 3 枚糖,由于只有 3 种糖,她可以每种吃一枚。枚糖的情况下,可以吃到糖的。原创 2025-07-08 11:20:45 · 559 阅读 · 0 评论 -
[贪心算法]BM96 主持人调度(二)
。原创 2025-07-06 19:38:00 · 933 阅读 · 0 评论 -
[贪心]BM95 分糖果问题
要想分出最少的糖果,利用贪心思想,肯定是相邻位置没有增加的情况下,大家都分到1,相邻位置有增加的情况下,分到糖果数加1就好。什么情况下会增加糖果,相邻位置有得分差异,可能是递增可能是递减,如果是递增的话,糖果依次加1,如果是递减糖果依次减1?这不符合最小,因为减到最后一个递减的位置可能不是1,必须从1开始加才是最小,那我们可以从最后一个递减的位置往前反向加1.贪心思想属于动态规划思想中的一种,其基本原理是找出整体当中给的每个局部子结构的最优解,并且最终将所有的这些局部最优解结合起来形成整体上的一个最优解。原创 2025-07-06 16:25:06 · 998 阅读 · 0 评论 -
[双指针]BM89 合并区间
贪心思想属于动态规划思想中的一种,其基本原理是找出整体当中给的每个局部子结构的最优解,并且最终将所有的这些局部最优解结合起来形成整体上的一个最优解。输入:[[10,30],[20,60],[80,100],[150,180]]先按照区间的start进行排序,然后依次遍历,合并重叠的部分。返回值:[[10,60],[80,100],[150,180]],区间内 的值都满足 0≤val≤2×。输入: [[0,10],[10,20]]请保证合并后的区间按区间起点升序排列。给出一组区间,请合并所有重叠的区间。原创 2025-07-06 14:53:23 · 1074 阅读 · 0 评论 -
【双指针】BM91 反转字符串
在原串上面操作,如果原串不能动的情况下,我们可以新开辟一个串,逆序遍历原串,并将结果拼接。写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)要求:空间复杂度 O(n),时间复杂度 O(n)定义两个指针,通过遍历进行收尾值交换。数据范围: 0≤n≤1000。返回值:"dcba"原创 2025-07-03 23:41:46 · 290 阅读 · 0 评论 -
[双指针]BM88 判断是否为回文字符串
因回文字符串正向遍历与逆向遍历结果都是一样的,所以我们可以准备两个对撞指针,一个正向遍历,一个逆向遍历。因回文字符串正向遍历与逆向遍历结果都是一样的,我们可以进行字符串反转,然后和原字符串比较,若相等则说明是反转字符串。给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。要求:空间复杂度 O(1) ,时间复杂度 O(n)字符串回文指该字符串正序与其逆序逐字符一致。输入:"yamatomaya"输入:"absba"输入:"ranko"原创 2025-07-03 23:05:00 · 858 阅读 · 0 评论 -
【大厂真题-京东】字符串排序
给定 n 个字符串,请你对这 n 个字符串按照以下规则从小到大排序。对于任意两个字符串 s 和 t ,在排序后应当满足:- 若 s是 t 的一个前缀,则 s 在排序后的下标小于等于 t 的在排序后的下标。- 若存在整数 i ,使得 s 的前 i−1 个字符和 t 的前 i−1个字符相同,且 s 和 t 的第 i个字符不同,则比较第 i 个字符的大小关系(字符的大小关系顺序由输入数据给出)。原创 2025-06-27 23:42:37 · 375 阅读 · 0 评论 -
【大厂真题-京东】
牛牛的糖果树牛牛的朋友送了她一棵节点数为 n 的糖果树(1号点为根节点),树上的每个糖果都有一个颜色。牛牛吃糖果有一个习惯,她每次都会吃掉一整个子树的糖果,她喜欢与众不同,所以每次吃之前她都会把出现次数最多的颜色的糖果扔掉(可能有多个出现次数最多的颜色,此时要全部扔掉),她可以选择任意一棵子树吃掉,但她只能吃一次,因此他想知道她一次能吃到的所有糖果的颜色的异或和最大是多少(如果吃到了多个颜色相同的糖果,也需要做多次异或),你能帮帮她吗?时间限制:C/C++ 1秒,其他语言2秒。原创 2025-06-27 23:27:32 · 401 阅读 · 0 评论 -
[大厂真题-京东]牛牛与切割机
有一个序列 a1,a2,...,ana1,a2,...,an , 牛牛将对这个序列切割一刀(划分分成两个不相交的非空序列,一个序列为 a1,…,apa1,…,ap,另一个序列为 ap+1,…,anap+1,…,an),牛牛切割的代价为两个序列元素和的乘积。牛牛想知道切割代价最小是多少。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M输入例子:51 2 3 4 5输出例子:14例子说明:序列被划分为1 和 2 3 4 5,右边和为 14。原创 2025-06-27 22:21:00 · 534 阅读 · 0 评论 -
[字符串]BM86 大数加法
时间复杂度O(max(lens, lent)):lens = s.length(), lent = t.length(),取决于长度较长的字符串。java :(java中的大数操作BigInteger,直接进行大数之间的运算,可以直接得到最终的结果。数据范围:s.length,t.length≤100000,字符串仅由'0'~‘9’构成。以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。输入:"114514",""返回值:"114514"输入:"1","99"说明:1+99=100。原创 2025-06-27 18:38:11 · 712 阅读 · 0 评论 -
【字符串】BM85 验证IP地址
IP地址是有规律可言的:IPv4用了4个0-255的数字,用点隔开,IPv6用了4位十六进制的数字,用冒号隔开,共8组,这都可以直接用正则表达式来表示。既不是 IPv4 地址,又不是 IPv6 地址。如果不是上述类型的 IP 地址,返回。有效的 IPv4 地址,返回 "IPv4"有效的 IPv6 地址,返回 "IPv6"如果是有效的 IPv6 地址,返回。如果是有效的 IPv4 地址,返回。是有效的 IPv6 地址,而。是无效的 IPv6 地址。为有效IPv4地址,为无效IPv4地址;为无效IPv4地址。原创 2025-06-27 18:08:33 · 621 阅读 · 0 评论
分享