zoukankan      html  css  js  c++  java
  • LeetCode 53. Maximum Subarray

    53. Maximum Subarray(最大子序和)

    链接

    https://leetcode-cn.com/problems/maximum-subarray

    题目

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    示例:

    输入: [-2,1,-3,4,-1,2,1,-5,4],
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
    进阶:

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

    思路

    没尝试分治法,那个有点麻烦,等做到别的分治时候再做。
    这边有动态规划的思想在里面,从头到尾遍历,如果和小于0,那么直接无视,重新开始,和大于0,就加上之前的和。每次都保留当前最大的和,直到输出。

    代码

    public static int maxSubArray(int[] nums) {
        int ans = nums[0];
        int sum = 0;
        for (int num : nums) {
          if (sum >= 0) {
            sum += num;
          } else {
            sum = num;
          }
          ans = Math.max(sum, ans);
        }
        return ans;
      }
    
  • 相关阅读:
    docker 基础
    shell
    MySQL之MGR
    MySQL之读写分离
    MySQL主从复制
    MySQL之数据类型
    MySQL之索引与约束条件
    SQL语句进阶
    SQL语句初识
    Linux之MySQL安装
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12297041.html
Copyright © 2011-2022 走看看