Skip to content

Latest commit

 

History

History
126 lines (81 loc) · 3.38 KB

File metadata and controls

126 lines (81 loc) · 3.38 KB

53. Maximum Subarray - 最大子数组和

Tags - 题目标签

Description - 题目描述

EN:

Given an integer array nums, find the subarray with the largest sum, and return its sum.

 

Example 1:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: The subarray [4,-1,2,1] has the largest sum 6.

Example 2:

Input: nums = [1]
Output: 1
Explanation: The subarray [1] has the largest sum 1.

Example 3:

Input: nums = [5,4,-1,7,8]
Output: 23
Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.

 

Constraints:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

 

Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

ZH-CN:

给你一个整数数组 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

 

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

Link - 题目链接

LeetCode - LeetCode-CN

Latest Accepted Submissions - 最近一次 AC 的提交

Language Runtime Memory Submission Time
typescript 96 ms 54.7 MB 2022/04/10 22:40
function maxSubArray(nums: number[]): number {
  if (nums.length === 1) {
    return nums[0];
  }
  const dp: number[] = [nums[0]];

  for (let i = 1; i < nums.length; i++) {
    dp[i] = dp[i-1] > 0 ? dp[i-1] + nums[i] : nums[i];
  }

  return Math.max(...dp);
};

My Notes - 我的笔记

这道题和 剑指 Offer 42. 连续子数组的最大和 相同,可以去看看思路。