LeetCode——剑指 Offer 42. 连续子数组的最大和(Java)
2021/7/17 11:05:55
本文主要是介绍LeetCode——剑指 Offer 42. 连续子数组的最大和(Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
题干: 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
题解思路
返回连续子数组和最大值,直接强制命令你时间复杂度为O(n) 明显你提示你最佳答案是一次循环就可以解决,当然也不排除有更佳的办法 这里我们采用一次循环的做法,每次添加新元素后比较和新元素作比较 如果没有当前新元素大,说明前面的和为负数,所以直接保存当前元素,否则就保存和 之后每次比较当前和和以前保存的和,取出最大值即可
正确代码
public int maxSubArray(int[] nums) { int pre = 0, ans = nums[0]; for (int num : nums) { pre = Math.max(num, pre + num); ans = Math.max(pre, ans); } return ans; }
总结
官方给出了一个分支线段树的方法,不过确实不是我现在能参悟的 在维护和修改的方面来说确实是高,希望自己了解了线段树之后可以灵活运用到类似题目上 如果文章存在问题或则和有更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见
这篇关于LeetCode——剑指 Offer 42. 连续子数组的最大和(Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南