Leetcode--53. 最大子序和

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

示例:

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

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

 

本提的进阶建议分治法,但使用动态规划,程序的性能更高

动态规划

动态规划的是首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 sum
如果 max > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字
如果 max <= 0,则说明 sum 对结果无增益效果,需要舍弃,则 sum 直接更新为0
每次比较 sum 和 max的大小,将最大值置为sum,遍历结束返回结果
时间复杂度:O(n)

可直接提交的代码:

class Solution {
    public int maxSubArray(int[] nums) {
        int max = 0;
        int i,sum;
        int n = nums.length;
        sum = nums[0];
        for(i=0;i<n;i++)
        {
            max+=nums[i];
            if(max>sum)
            {
                sum = max;
            }
            if(max<0)
            {
                max = 0;
            }
            else if(max>sum)
            {
                sum = max;
            }
        }
        return sum;
    }
}

 

完整的代码:


public class Solution53 {
    public static int maxSubArray(int[] nums) {
        int max = 0;
        int i,sum;
        int n = nums.length;
        sum = nums[0];
        for(i=0;i<n;i++)
        {
            max+=nums[i];
            if(max>sum)
            {
                sum = max;
            }
            if(max<0)
            {
                max = 0;
            }
            else if(max>sum)
            {
                sum = max;
            }
        }
        return sum;
    }
    public static void main(String[] args)
    {
        //int[] a = {-2,1,-3,4,-1,2,1,-5,4};
        int[] a = {-1,-2};
        System.out.println(maxSubArray(a));
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis为什么选择单线程工作模型

1、先说一下为什么出现进程&#xff0c;线程 进程&#xff1a;在计算机发明之初就发现&#xff0c;在输入数据时&#xff08;I/O速度慢&#xff09;&#xff0c;CPU是空闲的&#xff0c;这样就浪费了CPU资源&#xff0c;为了充分利用CPU资源&#xff0c;发明了进程&#xff0c;…

js与c语言效率_JavaScript比c语言的性能差了多少?

我这里先不说和C之间的性能差距&#xff0c;而是展开说JavaScript递归优化问题&#xff0c;有人问我为什么不说性能差距&#xff0c;我&#xff1a;&#xff1f;&#xff1f;&#xff1f;这个问题就跟问地球为什么是圆的一样(明摆着)传统的递归函数&#xff0c;比如:function a…

服务器物理内存总是九十几,Solr总是使用超过90%的物理内存(Solr always use more than 90% of physical memory)...

Solr总是使用超过90&#xff05;的物理内存(Solr always use more than 90% of physical memory)我在solr索引中存储了300000个文档。 并使用4GB RAM作为solr服务器。 但它消耗超过90&#xff05;的物理内存。 所以我把我的数据转移到一台有16 GB RAM的新服务器上。 再次solr消…

​​《自然》2020年十大科学发现出炉:病毒,冷冻电镜与快速射电暴

来源&#xff1a;科研圈作者&#xff1a;陈梦圆、谢一璇、李姗珊、邱燕宁、魏潇科学成就

Http协议--Get和Post区别

1. 请求路径不同 post请求&#xff0c;在url后面不跟上任何的数据 Get请求&#xff0c;在地址后面跟上数据 2. 带上的数据不同&#xff0c;Post请求会使用流的方式写数据。 Get请求是在地址栏上跟数据 3. 由于Post请求使用流的方式写数据&#xff0c; 所以一定需要一个Con…

Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法...

联合主键用Hibernate注解映射方式主要有三种&#xff1a; 第一、将联合主键的字段单独放在一个类中&#xff0c;该类需要实现java.io.Serializable接口并重写equals和hascode&#xff0c;再将该类注解为Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类…

命令行设置dns_dos命令netsh图文教程,设置修改IP地址子网掩码网关命令行改dns...

大家好&#xff0c;我是老盖&#xff0c;首先感谢观看本文&#xff0c;本篇文章做的有视频&#xff0c;视频讲述的比较详细&#xff0c;也可以看我发布的视频。今天我们学习dos命令中的netsh&#xff0c;这个命令是网络命令&#xff0c;它有很多的功能&#xff0c;今天我们用它…

Leetcode--5081. 步进数

如果一个整数上的每一位数字与其相邻位上的数字的绝对差都是 1&#xff0c;那么这个数就是一个「步进数」。 例如&#xff0c;321 是一个步进数&#xff0c;而 421 不是。 给你两个整数&#xff0c;low 和 high&#xff0c;请你找出在 [low, high] 范围内的所有步进数&#x…

文件操作的基本流程

1、读模式 f.read()f.readable()#这个文件是否可读&#xff0c;返回布尔值&#xff1b;f.readline(“读模式”)#读取第一行&#xff1b;f.readlines(“读模式”)#读取所有内容 以字符串方式存储在列表内&#xff1b; f open(小重山,r,encodingutf-8) #第一个参数是文件位置&am…

第三代人工智能基础设施背后,是一次技术应用的常识普及运动

来源&#xff1a;脑极体买了新电脑和手机&#xff0c;你会提前安装好杀毒或安全软件&#xff0c;还是等被黑客攻破了才悔之晚矣&#xff1f;处理传染病疫情&#xff0c;是从源头释放药物和疫苗&#xff0c;还是坐等医院的患者超过治疗和处理能力&#xff1f;面对危机舆情&#…

5 ui自适应窗口_Qt编写地图综合应用5-自适应拉伸

一、前言用过echart的人都会遇到一个问题&#xff0c;就算是代码中写了window.onresize echart.resize&#xff0c;也只是横向自适应拉伸填充页面&#xff0c;垂直方向不会变化&#xff0c;除非指定高度才可以&#xff0c;这就比较郁闷了&#xff0c;为何echart本身不会自适应…

Leetcode--85. 最大矩形

给定一个仅包含 0 和 1 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例: 输入: [ ["1","0","1","0","0"], ["1","0","1","1","…

PowerDesigner生成sql语句时自动导出注释

1、为sql生成注释&#xff0c;操作如下&#xff0c;在其中选择Tools----》Excute commands-----》Edit/Run Script打开的窗口中添加以下信息 ****************************************************************************** * File: name2comment.vbs * Purpo…

为什么俄罗斯的数学那么牛?

编辑 ∑Gemini来源:奇趣数学苑但在国际上也有一个很著名的说法&#xff0c;就是世界上最好的大学&#xff0c;其实是“美国的学校&#xff0c;中国的学生&#xff0c;俄罗斯的教授”。俄罗斯数学家佩雷尔曼虽然俄罗斯现在相比以前来说&#xff0c;尤其明显的是在一些需要大量设…

查看屏幕大小_疑似“iPhone 12” 的OLED屏幕组件泄露

来自可靠的泄密者的新照片显示了即将面世的“ iPhone 12”所搭载的OLED屏幕。这名泄密者以前曾显示过未来苹果产品的准确图像&#xff0c;此前曾展示过苹果A14芯片组的早期图片&#xff0c;并声称“ iPhone 12”将配备20W电源适配器。现在他在推特上发布了一张照片&#xff0c;…

Leetcode--198. 打家劫舍

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的…

搭建Hexo博客(一)-创建Hexo环境

Hexo配合github&#xff0c;可以创建自己的博客。基本原理是使用Hexo生成静态页面&#xff0c;发布到github上。在本地需要搭建Hexo环境。 1、安装nodejs 下载并安装NodeJS&#xff0c;官网地址&#xff1a;https://nodejs.org/en/ 2、安装完后&#xff0c;查看安装情况 1 node…

python logging模块的作用及应用场景_Python logging模块原理解析及应用

一、logging日志模块等级常见log级别从高到低&#xff1a;CRITICAL 》ERROR 》WARNING 》INFO 》DEBUG&#xff0c;默认等级为WARNING&#xff0c;即>WARNING级别的log才输出。日志等级(level)描述CRITICAL当发生严重错误&#xff0c;导致应用程序不能继续运行时记录的信息E…

Nature:2020年最佳科学影像,每一张都是壁纸,每一张都是历史

文章来源&#xff1a;学术头条2020年是独一无二的一年。COVID-19大流行将科学推到了最前沿&#xff0c;并深刻影响了人们的生活。但是这一年也产生了许多与病毒无关的新影像。从薄薄的太阳能电池&#xff0c;到经过基因编辑的鱿鱼&#xff0c;下面就是Nature新闻和艺术团队评选…

Leetcode--213. 打家劫舍Ⅱ

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈&#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚…