53. 最大子序和 golang (动态规划与贪心算法)

题目

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

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

如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。
如果现在的和成了负数,那么就从下一个大于0的数字开始

func maxSubArray(nums []int) int {if len(nums) == 1{return nums[0]}var currSum, maxSum = 0, nums[0]for _, v := range nums {if currSum > 0 {currSum += v} else {currSum = v}if maxSum < currSum {maxSum = currSum}}return maxSum
}

动态规划

在整个数组或在固定大小的滑动窗口中找到总和或最大值或最小值的问题可以通过动态规划(DP)在线性时间内解决。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解
找到当前区间的最优解,而贪心算法是

func maxSubArray(nums []int) int {max_sum := nums[0]for i := 1; i < len(nums); i++ {if nums[i - 1] > 0 {nums[i] += nums[i - 1]} if nums[i] > max_sum {max_sum = nums[i]}    }return max_sum
}

参考

动态规划和贪心算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

665. 非递减数列 golang 切片越界问题的探讨(二)

思路 给定一个长度为 n 的整数数组&#xff0c;你的任务是判断在最多改变 1 个元素的情况下&#xff0c;该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的&#xff1a; 对于数组中所有的 i (1 < i < n)&#xff0c;满足 array[i] < array[i 1]。 示…

70. 爬楼梯 golang 斐波那契数列

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; 有两种方法可以爬…

Time, Clocks, and the Ordering of Events in 翻译

summary 第一次翻译论文&#xff0c;真的翻译的很烂。给我的体会是&#xff1a; 你需要很强的英文翻译水平&#xff0c;注意是翻译水平不是英文水平。你需要有极强的专业知识水平&#xff08;专业大佬&#xff09;&#xff0c;这样才能从一个宏观的角度理解论文&#xff0c;给一…

golang plugin模块的使用

共享库工具 Currently plugins are only supported on Linux and macOS 通过plugin我们可以很方便的对于不同功能加载相应的模块并调用相关的模块&#xff1b;也可以针对不同语言&#xff08;英文、汉语、德语……&#xff09;加载不同的语言so文件&#xff0c;进行不同的输出&…

6.824 MapReduce lab1 2020(一)

文章目录MIT 6.824 分布式系统 lab1&#xff1a;MapReduceNoteswordcounts MapReduce Model look likea simple sequential mapreduce implementation(mrsequential.go)MIT 6.824 分布式系统 lab1&#xff1a;MapReduce 文档 https://pdos.csail.mit.edu/6.824/labs/lab-mr.ht…

golang并发官方示例

文章目录GoroutinesChannelsBuffered ChannelsRange and CloseSelectfatal error: all goroutines are asleep - deadlock!Default Selectionsync.MutexExercise: Web Crawler官方网站Goroutines A goroutine is a lightweight thread managed by the Go runtime. go f(x, y,…

6.824 RPC lesson2 2020(一)

resources https://pdos.csail.mit.edu/6.824/notes/crawler.go https://pdos.csail.mit.edu/6.824/notes/l-rpc.txt https://pdos.csail.mit.edu/6.824/notes/kv.go RPC_concept 19 | 分布式通信之远程调用&#xff1a;我是你的千里眼&#xff08;https://time.geekbang.or…

6.824 RPC lesson2 2020(二)

Use RPC to make a kv storage server Go example: kv.go on schedule page A toy key/value storage server – Put(key,value), Get(key)->value Uses Go’s RPC library Common: Declare Args and Reply struct for each server handler. Client: connect()s Dial() cre…

35. 搜索插入位置 golang

题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出…

191. 位1的个数 golang

题目 位1的个数 编写一个函数&#xff0c;输入是一个无符号整数&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为汉明重量&#xff09;。 示例 1&#xff1a; 输入&#xff1a;00000000000000000000000000001011 输出&#xff1a;3 解释&#…

445. 两数相加 II golang

题目 两数相加 II 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 进阶: 如果输入链表不能修改该如何处理&#xf…

关于golang的append函数的踩坑

文章目录从LeetCode第26题产生的疑问测试代码LeetCode22解决方式原题例2 LeetCode189copy的值复制从LeetCode第26题产生的疑问 这篇文章里面提到了关于在函数内部修改数据的情况。但是LeetCode22题中发现append无法在传送变量中进行append。 测试代码 输出结果 [123 456 7] //…

22. 括号生成 golang 图解

题目 括号生成 给出 n 代表生成括号的对数&#xff0c;请你写出一个函数&#xff0c;使其能够生成所有可能的并且有效的括号组合。 例如&#xff0c;给出 n 3&#xff0c;生成结果为&#xff1a; [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 解法 f…

279. 完全平方数 golang BFS

题目 完全平方数 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, …&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n 12 输出: 3 解释: 12 4 4 4. 示例 2: 输入: n 13 输出: 2 解释: 13 4 9…

104. 二叉树的最大深度 golang DFS

题目 二叉树的最大深度 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3/ \9 20/ \15 7返回它的最…

169. 多数元素 golang

题目 多数元素 给定一个大小为 n 的数组&#xff0c;找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出…

168.167Excle表列整数字符和字符整数的互相转化

题目 Excel表列序号 给定一个Excel表格中的列名称&#xff0c;返回其相应的列序号。 例如&#xff0c; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1: 输入: “A” 输出: 1 示例 2: 输入: “AB” 输出: 28 示例 3: 输入: “ZY” 输…

709. 转换成小写字母 golang 字符串处理

题目 转换成小写字母 实现函数 ToLowerCase()&#xff0c;该函数接收一个字符串参数 str&#xff0c;并将该字符串中的大写字母转换成小写字母&#xff0c;之后返回新的字符串。 示例 1&#xff1a; 输入: “Hello” 输出: “hello” 示例 2&#xff1a; 输入: “here” 输…

9. 回文数 golang 整数处理

题目 9. 回文数 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121-…