golang中怎么利用leetcode连续数列
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇文章为大家展示了golang中怎么利用leetcode连续数列,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。给定一个整数数组(有正数有负数),找出总和最大
千家信息网最后更新 2025年02月08日golang中怎么利用leetcode连续数列
本篇文章为大家展示了golang中怎么利用leetcode连续数列,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。
示例:
输入:[-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6。
进阶:
如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
解题思路
解题方案一 (动态规划)
思路
假设数组名称为arr,结果数组为result
当只有一个数字的时候,最大的连续数列只能是这个数字,所以序号为0的位置,最大值为-2,则有
result[0] = arr[0]
当有两个数字时,有两种情况
保留前边的序列,此时值为
result[0] + arr[1]=
不保留前边的序列,此时值为
1
,即arr[1]此时选取最大值的话为1
到第三个数字时
保留前边的序列,值为
result[1] + arr[2] = 1 + -3 = -2
不保留前边的序列,值为
arr[2] = -3
此时选取最大值的话为-3
以此类推的话可以得到下表
序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
数值(arr数组) | -2 | 1 | -3 | 4 | -1 | 2 | 1 | -5 | 4 |
保留前边的序列 | -1 | -4 | -1 | 3 | 5 | 6 | 1 | 5 | |
不保留前边的序列 | 1 | -3 | 4 | 4 | 2 | 1 | -5 | 4 | |
最大值(result数组) | -2 | 1 | -3 | 4 | 4 | 5 | 6 | 1 | 4 |
总结可得如下规律
最终只需取得result[]中值最大的数即为结果
代码
public static int maxSubArray(int[] arrs) {
int len = arrs.length;
int maxNum = arrs[0];
int[] result = new int[arrs.length];
result[0] = maxNum;
for (int i = 1; i < len; i++) {
int a = result[i - 1] + arrs[i]; //保留前边的序列
int b = arrs[i]; //不保留前边的序列
int curMax = Math.max(a, b);
result[i] = curMax;
if (curMax > maxNum) {
maxNum = curMax;
}
}
return maxNum;
}
代码优化
由于上述过程中,创建了result数组,但是实际上每次循环时,当前数字计算完之后就没有其他用处了,所以此处可以使用arrs数组作为result数组来用,优化后如下
public static int maxSubArray(int[] arrs) {
int len = arrs.length;
int maxNum = arrs[0];
for (int i = 1; i < len; i++) {
int a = arrs[i - 1] + arrs[i]; //保留前边的序列
int b = arrs[i]; //不保留前边的序列
int curMax = Math.max(a, b);
arrs[i] = curMax;
if (curMax > maxNum) {
maxNum = curMax;
}
}
return maxNum;
}
代码实现
func maxSubArray(nums []int) int {sum:=0max:=0for i,n:=range nums{ if i==0{ max=n sum=n continue } if sum+n>n{ sum+=n }else{ sum=n } if max
上述内容就是golang中怎么利用leetcode连续数列,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
序列
数组
最大
数字
数列
最大值
代码
内容
序号
思路
总和
技能
知识
结果
复杂
简明
精妙
以此类推
简明扼要
三个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
win kms服务器地址
魔域服务器怎么升级
淮安软件开发推荐咨询
软件开发常说的交互词语
数据库非聚集索引
德温特专利引文索引数据库
excel数据导入数据库宏
嵌入式软件开发 跳槽
网络安全民宗局应急预案
空白数据库和空数据库
代理服务器异常啥意思
数据库讲座
t-sql如何创建数据库
江阴机电软件开发售后服务
一个服务器可以分两个网段吗
数据库的七大原则
服务器密码设置错误
数据库的备份应考虑哪些问题
软件开发公司的电话
软件开发技巧迷你世界
网络安全支付的前景
神父 服务器 育碧
企业服务器安全运行情况
网络安全应急演练有哪些方式
网络安全工程高校
微销营销软件开发
musql数据库怎么备份
重要期间网络安全保障工作总结
培训学校的网络安全
数据库开发考试