返回介绍

Minimum Subarray

发布于 2025-02-22 13:01:35 字数 1111 浏览 0 评论 0 收藏 0

Source

Given an array of integers, find the subarray with smallest sum.

Return the sum of the subarray.

Example
For [1, -1, -2, 1], return -3

Note
The subarray should contain at least one integer.

题解

Maximum Subarray 的变形,使用区间和容易理解和实现。

Java

public class Solution {
  /**
   * @param nums: a list of integers
   * @return: A integer indicate the sum of minimum subarray
   */
  public int minSubArray(ArrayList<Integer> nums) {
    if (nums == null || nums.isEmpty()) return -1;

    int sum = 0, maxSum = 0, minSub = Integer.MAX_VALUE;
    for (int num : nums) {
      maxSum = Math.max(maxSum, sum);
      sum += num;
      minSub = Math.min(minSub, sum - maxSum);
    }

    return minSub;
  }
}

源码分析

复杂度分析

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文