博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer] 连续子数组的最大和
阅读量:7005 次
发布时间:2019-06-27

本文共 721 字,大约阅读时间需要 2 分钟。

本文首发于我的个人博客:

题目描述

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)

解题思路

对于一个数组中的一个数x,若是x的左边的数加起来非负,那么加上x能使得值变大,这样我们认为x之前的数的和对整体和是有贡献的。如果前几项加起来是负数,则认为有害于总和。

我们用cur记录当前值, 用max记录最大值,如果cur<0,则舍弃之前的数,让cur等于当前的数字,否则,cur = cur+当前的数字。若cur和大于max更新max。

参考代码

public class Solution {    public int FindGreatestSumOfSubArray(int[] array) {        if(array.length == 0)            return 0;        int cur = array[0], max = array[0];        for(int i=1; i
0 ? cur + array[i] : array[i]; if(max < cur) max = cur; } return max; }}

转载地址:http://poytl.baihongyu.com/

你可能感兴趣的文章
阿里P8架构师谈:如何搭建亿级并发系统的性能指标体系
查看>>
关于webpack优化,你需要知道的事(上篇)
查看>>
深入浅出Java并发核心
查看>>
springmvc+mybatis +Jeesz 分布式架构
查看>>
深入剖析 Java7 中的 HashMap 和 ConcurrentHashMap
查看>>
打造腾讯营销数据闭环,MTA联手腾讯广告平台
查看>>
Tomcat中用JNDI方式加载JDBC DataSource以连接数据库
查看>>
android解析HashMap格式的json
查看>>
AFNetworking 源码分析(一)
查看>>
深入理解channel:设计+源码
查看>>
【Android】RxJava的使用(一)基本用法
查看>>
React Fiber 原理介绍
查看>>
断路器HystrixCircuitBreaker
查看>>
前端爬坑之旅--echarts渲染时canvas变为100px
查看>>
CODING 最佳实践:快课网研发效能提升之路
查看>>
实现一个平行四边形
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
elasticsearch v6.5.4配置
查看>>
Python2+Selenium入门01-环境准备
查看>>
golang协程池设计
查看>>