首页 > 其他分享 >用 Go 剑指 Offer 42. 连续子数组的最大和

用 Go 剑指 Offer 42. 连续子数组的最大和

时间:2023-04-10 12:11:19浏览次数:39  
标签:nums int max Offer 42 数组 Go now former

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

要求时间复杂度为O(n)。

 

示例1:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
 

提示:

1 <= arr.length <= 10^5
-100 <= arr[i] <= 100

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

动态规划

// 不改变原数组且只使用常数空间,空间复杂度为O(n)
/*func maxSubArray(nums []int) int {
    max := nums[0]
    former := 0
    now := nums[0]
    for _, num := range(nums) {
        now = num
        if former >= 0 {
            now = now + former
        }
        if now > max {
            max = now
        }
        former = now
    }
    return max
}*/
// 在原数组上进行修改
func maxSubArray(nums []int) int {
    max := nums[0]
    for i := 1; i < len(nums); i++ {
        if nums[i - 1] >= 0 {
            nums[i] = nums[i - 1] + nums[i] 
        }
        if nums[i] > max {
            max = nums[i]
        }
    }
    return max
}

 

标签:nums,int,max,Offer,42,数组,Go,now,former
From: https://www.cnblogs.com/slowlydance2me/p/17302518.html

相关文章

  • 用 Go 剑指 Offer 40. 最小的k个数 (Top K 问题)
    输入整数数组arr,找出其中最小的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例1:输入:arr=[3,2,1],k=2输出:[1,2]或者[2,1]示例2:输入:arr=[0,1,2,1],k=1输出:[0] 限制:0<=k<=arr.length<=100000<=arr[i] <=100......
  • GO打包到linux服务器运行
    方法二:本地编译cmd控制台到main.go文件目录下setGOARCH=amd64setGOOS=linuxgobuildmain.go会生成一个没有后缀的二进制文件main将该文件放入linux系统某个文件夹下赋予权限chmod777main最后执行./main就行了。如果想让项目在后台执行:执行nohup./main&,这样......
  • django中批量导入功能(excel)
    当我们想要通过excel来实现批量导入时,有一种方式:1.需要创建的对象data_dict={}#多个data_dict2.将每一个要创建的对象加入到一个列表当中data=[]data.append(data_dict)3.通过事务进行创建withtransaction.atomic():foriteminrange(0,len(data)):......
  • Golang基础-- select的用法
    select是golang在语言层面提供的多路IO复用的机制,其可以检测多个channel是否ready三个题目示例来说明一下select的大概作用:题目一:声明两个channel,分别为chan1和chan2,依次启动两个协程,分别向两个channel中写入一个数据就进入睡眠。select语句两个case分别检测chan1和chan2是......
  • Rust编程语言入门之cargo、crates.io
    cargo、crates.io本章内容通过releaseprofile来自定义构建在https://crates.io/上发布库通过workspaces组织大工程从https://crates.io/来安装库使用自定义命令扩展cargo一、通过releaseprofile来自定义构建releaseprofile(发布配置)releaseprofile:是预......
  • MongoDB、Redis、HBase、Cassandra、Elasticsearch、ClickHouse等NoSQL数据库简介及优
    MongoDBMongoDB是一个基于文档的NoSQL数据库,它使用BSON(二进制JSON)格式存储数据。MongoDB支持动态查询,可以轻松地处理非结构化数据。它还支持水平扩展,可以在多个节点上分布数据。优点:灵活性高,支持非结构化数据存储。支持水平扩展,可以在多个节点上分布数据。支持动态查询,可......
  • 后端开发Go语言-Gin框架
    随心记录,内容仅供参考!2023/04/09  gin框架介绍及安装2023/04/09  gin框架路由router......
  • 【学习笔记】go协程和通道
    虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否有一种机制:使用者分配足够多的任务,系统能自动帮助使用者把任务分配到CPU上,让这些任务尽量并发运作。这种机制在Go语言中被称为goroutine。go......
  • django中migrate后重建库生成表失败?!
    如题,吓死我了虚拟环境里开了两个项目,终端migrate的时候弄错了,结果一直在生成另一个没有变化的库...我还以为是出了什么问题,删了原先的要建表库重新建了一遍。结果再自动生成的时候重新建的表一直没反应,给我吓坏了。还以为是我的sql出问题了,跑去C盘没找到mysql目录吓得我满头大......
  • 解决Godot使用VsCode编写C#代码,智能提示不见了[一问随笔]
    问题:我的项目采用了godot+visualstudiocode+C#,有天突然换引擎,从Godot4.0.0升级到Godot4.0.2,visualstudiocode突然不给代码提示了,甚是奇怪。查看报错发现这样一句话找不到指定的sdk“godot.net.sdk/4.0.2”糟了!不会这个版本不支持用vscode写代码吧!解决方式:......