二哥的LeetCode刷题笔记,第 53 题最大子数组和,动态规划轻松解决
鲁迅曾说,日子总要一天天的过,就过成了一生。每天都要有所收获,每天都要有所进步,这样子,我们的生活才会更加充实,更加有意义。今天,我们就来学习一道算法题——最大子数组合,希望你能够有所收获。
题意
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
难度
中等
示例
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [5,4,-1,7,8]
输出:23
分析 1
遇到这种题目,暴力算法是最容易想到的,直接穷举所有可能的子数组,计算每个子数组的和,找到最大值。
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length;
int maxSum = Integer.MIN_VALUE; // 初始化为最小值
// 枚举每一个子数组
for (int i = 0; i < n; i++) {
int currentSum = 0; // 当前子数组的和
for (int j = i; j < n; j++) {
currentSum += nums[j]; // 累加当前子数组的元素
maxSum = Math.max(maxSum, currentSum); // 更新最大和
}
}
return maxSum; // 返回最大子数组的和
}
p...真诚点赞 诚不我欺
热门评论
2 条评论
回复