Kadane算法用于解决连续子数组最大和问题,我们用ci来表示数组a[0...i]的最大和。

观察可以发现当ci-1 < 0时,c= ai。用e表示以当前为结束的子数组的最大和,以替代数组c;那么: e = max(e,e+ai)。

//int [] arr = new int [size]
public int kadane(int [] arr){
int max_ending_here = arr[0];
int max_so_far = arr[0];
for(int i = 0; i < arr.length; i++){
max_ending_here = Math.max(arr[i],arr[i]+max_ending_here);
max_so_far = Math.max(max_so_far,max_ending_here);
}
return max_so_far;
}

  

Kadane算法的更多相关文章

  1. [leetcode121]股票买卖 Best Time to Buy and Sell Kadane算法

    [题目] Say you have an array for which the ith element is the price of a given stock on day i. If you ...

  2. [整理]Kadane算法

    仅能操作一次时,需每次观察是否有为负情况置零.多次操作时,仅需判断是否后者大于前者. leetcode 53.121.122 [代码] class Solution { public int maxS ...

  3. 矩阵求和及Kadane算法

    今天的一道题目: https://leetcode.com/problems/max-sum-of-sub-matrix-no-larger-than-k/ 有难度.这一类题目很有代表性. 搜到这个网 ...

  4. 【数据结构】算法 Maximum Subarray

    最大子数组:Maximum Subarray 参考来源:Maximum subarray problem Kadane算法扫描一次整个数列的所有数值,在每一个扫描点计算以该点数值为结束点的子数列的最大 ...

  5. 最大子段和的DP算法设计及其效率测试

    表情包形象取自番剧<猫咪日常> 那我也整一个 曾几何时,笔者是个对算法这个概念漠不关心的人,由衷地感觉它就是一种和奥数一样华而不实的存在,即便不使用任何算法的思想我一样能写出能跑的程序 直 ...

  6. nyoj 44 子串和

    子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3   描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最 ...

  7. leetCode 53.Maximum Subarray (子数组的最大和) 解题思路方法

    Maximum Subarray  Find the contiguous subarray within an array (containing at least one number) whic ...

  8. 【LeetCode题解】动态规划:从新手到专家(一)

    文章标题借用了Hawstein的译文<动态规划:从新手到专家>. 1. 概述 动态规划( Dynamic Programming, DP)是最优化问题的一种解决方法,本质上状态空间的状态转 ...

  9. 动态规划法(八)最大子数组问题(maximum subarray problem)

    问题简介   本文将介绍计算机算法中的经典问题--最大子数组问题(maximum subarray problem).所谓的最大子数组问题,指的是:给定一个数组A,寻找A的和最大的非空连续子数组.比如 ...

随机推荐

  1. lua中使用table实现类和继承

    --因为只有当读写不存在的域时,才会触发__index和__newindex classA = {className = "classA",name="classAIns ...

  2. Netty入门3之----Decoder和Encoder

    ​ Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...

  3. SVNKit学习——基于Repository的操作之print repository tree、file content、repository history(四)

    此篇文章同样是参考SVNKit在wiki的官方文档做的demo,每个类都可以单独运行.具体的细节都写到注释里了~ 开发背景: SVNKit版本:1.7.14 附上官网下载链接:https://www. ...

  4. java 中linq 的使用方式 筛选 查找 去重

    1.筛选 $.Enumerable.From(value).Where(function(x) {//value 为被操作的内容 return x.name == name;//第一个name为val ...

  5. HTTP(一)

    HTTP(一) http php http请求 HTTP请求:请求行.消息报头.请求正文.格式如下: Method Request-URI HTTP-Veraion CRLF 参数说明 Method ...

  6. Oracle查看每小时日志切换量脚本

    ---- Show the Number of Redo Log Switches Per Hour-- SET PAUSE ONSET PAUSE 'Press Return to Continue ...

  7. good pics

  8. hive 的一个小问题

    hive查询语句中如果包含中文,如like '%奥巴马%' ,并且所查hive表中的数据是utf-8的,可能会查不出正确结果. 原因可能是系统环境的LANG 设置不是utf-8,需要把环境变量LANG ...

  9. 规约模式的ef拼接

    public class LamadaExtention<Dto> where Dto : new() { private List<Expression> m_lstExpr ...

  10. hdu-1695 GCD---容斥定理

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目大意: 求解区间[1, n]和[1, m]中有多少对不同的x和y使得gcd(x, y) = ...