1、题目描述

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

示例:

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

2、解法及解题思路

public class MaximumSubarray {public static void main(String[] args) {int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};// int[] nums = {-1, -3, -4, 4, -2, -1, -5, -4};System.out.println(maxSubArray(nums));System.out.println(maxSubArray1(nums));}/*** 解法一 动态规划(Kadane 算法)** @param nums* @return*/private static int maxSubArray(int[] nums) {// 迄今为止的最大和int res = nums[0];// 前一元素位置的最大和int sum = 0;for (int num : nums) {if (sum > 0) {// 如果 sum > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字sum += num;} else {// 如果 sum <= 0,则说明 sum 对结果无增益效果,需要舍弃,则 sum 直接更新为当前遍历数字sum = num;}// 每次比较 sum 和 res的大小,将最大值置为res,遍历结束返回结果res = Math.max(res, sum);}return res;}/*** 解法二 贪心算法** @param nums* @return*/private static int maxSubArray1(int[] nums) {// 当前元素位置的最大和int curMax = nums[0];// 迄今为止的最大和int soFarMax = nums[0];for (int i = 1; i < nums.length - 1; i++) {curMax = Math.max(curMax, curMax + nums[i]);soFarMax = Math.max(soFarMax, curMax);}return soFarMax;}}

【算法系列之十四】最大子序和相关推荐

  1. 算法系列之十四:狼、羊、菜和农夫过河问题

    算法系列之十四:狼.羊.菜和农夫过河问题 题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷 ...

  2. 狼羊菜过河问题c语言算法,算法系列之十四:狼、羊、菜和农夫过河问题

    题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种方法,让农夫能够 ...

  3. 机器学习算法系列(十四)-硬间隔支持向量机算法(Hard-margin Support Vector Machine)

    阅读本文需要的背景知识点:拉格朗日乘子法.KKT条件.一丢丢编程知识 一.引言   前面一节我们介绍了一种分类算法--朴素贝叶斯分类器算法,从概率分布的角度进行分类.下面我们会花几节来介绍另一种在分类 ...

  4. SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】

    SVM 支持向量机算法(Support Vector Machine )[Python机器学习系列(十四)] 文章目录 1.SVM简介 2. SVM 逻辑推导 2.1 Part1 化简限制条件 2.2 ...

  5. IT职场人生系列之十四:经验积累

    本文是IT职场人生系列的第十四篇. 任何时候都会发现IT业是个变化迅速的行业,几年前还很时髦的技术,现在已经过时了:几年前还很热门的行业,现在也过时了.这种变化之莫测,别说我们普通人,连IT巨头们都经 ...

  6. springboot mybatis ehcache_SpringBoot入门建站全系列(十四)集成Redis缓存

    SpringBoot入门建站全系列(十四)集成Redis缓存 一.概述 本地缓存,就是使用应用内使用本地内存将数据暂缓存储,一般数据库的查询如果不怎么改动,可以用本地缓存暂存. 远程缓存,比如redi ...

  7. ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中)

    ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中) 接上文 上文中讲到配置日志模块的第二步,这篇文章继续给大家介绍日志配置方法. Step 3.在</ ...

  8. 7月算法训练------第十四天(栈)解题报告

    7月算法训练------第十四天(栈)解题报告 题目类型:栈 题目难度:简单 第一题.1614. 括号的最大嵌套深度 题目链接:1614. 括号的最大嵌套深度 思路分析: 遍历整个字符串,如果是'(' ...

  9. 【SQL开发实战技巧】系列(十四):计算消费后的余额计算银行流水累计和计算各部门工资排名前三位的员工

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

最新文章

  1. 如何配置mac的mysql环境_mac安装mysql数据库及配置环境变量
  2. linux下的strerror和perror
  3. Jenkins中连接Git仓库时提示:error: The requested URL returned error: 401 Unauthorized while accessing
  4. python max函数_Python max内置函数详细介绍
  5. lynda ux_UX编排原理
  6. 设计模式学习笔记——适配器(Adapter)模式
  7. 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解
  8. 聊天宝解散,多闪、马桶MT还会远吗?| 畅言
  9. Handler sendMessage 与 obtainMessage (sendToTarget)比较
  10. bzoj 2152 聪聪可可
  11. 计算机SCI期刊征稿 | 影响因子最高10+,一区,毕业/评职称不要错过!
  12. activity和service之间的相互通信方法
  13. hdu1403(后缀数组模板)
  14. 线性代数中矩阵相乘如何计算
  15. 测试用例方法----正交试验(实验)设计法(黑盒)
  16. meltdown漏洞解释_“ Meltdown” CPU漏洞的简化解释
  17. 你知道 DNS,那我猜你一定不知道 HTTPDNS
  18. 起点:如何成为一名黑客?
  19. 解决python.exe 无法找到程序入口,无法定位程序输入点
  20. zblog asp php,ZBlog你选择PHP还是ASP?

热门文章

  1. unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯
  2. java正确的代码_对文件名为Test.java的java代码描述正确的是()
  3. HEC-RAS如何修改SA/2D Connection的名称
  4. python中numpy是什么_什么是NumPy?
  5. c语言编程怎么实现替换,使用C语言实现字符串中子字符串的替换
  6. mysql memcached 使用场景_memcache 应用场景
  7. VOIP,PSTN,ISDN
  8. Arm Linux交叉编译和连接过程分析(1)
  9. Navicat怎么看oracle作业,[数据库] Navicat for Oracle基本用法图文介绍
  10. console对象的方法log、info、warn、error的区别及几个实用的方法