首页 > 其他分享 >力扣---53. 最大子数组和

力扣---53. 最大子数组和

时间:2022-12-16 16:23:17浏览次数:30  
标签:--- tem nums int max 示例 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 <= nums.length <= 105
    -104 <= nums[i] <= 104

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

遍历nums,如果发现有一个子数组的和<0,那么之后的数组不应该包含它,因为此时的它会只会造成负面效果。

定义一个tem变量来存储子数组的和,如果tem < 0;tem重新赋值为0;意味着舍弃了之前的子数组。

再定义一个max来存储遍历过程中子数组的最大值,遍历结束后的max就是答案。

代码如下:

 1 class Solution {
 2     public int maxSubArray(int[] nums) {
 3         //int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
 4         int max = nums[0];
 5         int tem = 0;
 6         for (int num : nums) {
 7             tem += num;
 8             max = Math.max(tem, max);
 9             if (tem <= 0) {
10                 tem = 0;
11             }
12         }
13         return max;
14     }
15 }

运行结果如下:

运行结果

 

标签:---,tem,nums,int,max,示例,53,力扣,数组
From: https://www.cnblogs.com/allWu/p/16987669.html

相关文章