golang中怎么利用leetcode连续数列
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,本篇文章为大家展示了golang中怎么利用leetcode连续数列,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。给定一个整数数组(有正数有负数),找出总和最大
千家信息网最后更新 2024年11月16日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安全错误
数据库的锁怎样保障安全
宽带网络安全管理
数据库er图绘制工具
工程类招聘软件开发
医院网络安全检测多少钱
眼镜行业软件开发的服务水平
磁盘管理虚拟磁盘服务器
中国社科期刊数据库
浪潮c 软件开发面试题
pyqt5常用数据库
国家推进安全网络安全建设
vrar软件开发是什么
激战2无法连接 服务器
机架式服务器维修地址
c 游戏软件开发
access数据库选项组向导
问道哪个服务器有聚宝斋
我国残疾人现状数据库
电脑锁屏软件开发
广东科技学院网络技术
校园网络安全事件案例和启示
如何取消数据库的变更捕获
cmd连接数据库失败
湖泊数据库
oracle 数据库分布
东莞机械手点胶软件开发
湛江戴尔服务器销售
浏览服务器模式
计算机网络技术的未来规划
数据库免费版
c 如何为系统录入数据库