【算法系列之十四】最大子序和

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;}}

 

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

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

相关文章

python的代码复用技术_Python__函数和代码复用

主要内容函数的定义和使用实例:七段数码管的绘制代码复用与函数递归PyInstall库的使用实例&#xff1a;科赫雪花小包裹函数的定义与使用函数的理解与定义函数的使用及调用过程函数的参数传递函数的返回值局部变量和全局变量lambda函数------------------------------------函数…

Queue:poll、offer、element、peek的区别

队列是一种特殊的线性表&#xff0c;它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作。进行插入操作的端称为队尾&#xff0c;进行删除操作的端称为队头。队列中没有元素时&#xff0c;称为空队…

python实现k均值算法_python实现kMeans算法

聚类是一种无监督的学习&#xff0c;将相似的对象放到同一簇中&#xff0c;有点像是全自动分类&#xff0c;簇内的对象越相似&#xff0c;簇间的对象差别越大&#xff0c;则聚类效果越好。1、k均值聚类算法k均值聚类将数据分为k个簇&#xff0c;每个簇通过其质心&#xff0c;即…

mysql给数据量大的表添加索引的办法

有一个问题&#xff0c;一张表有3百万条记录&#xff0c;随着时间的增加&#xff0c;记录量会更多&#xff0c;此时查询速度很慢。在创建此表前没有未相应字段添加索引&#xff0c;所以此时需要为表添加索引。但是因为数据量大的原因&#xff0c;索引添加不成功&#xff0c;想了…

修改背景图片_我花了5小时,为网易修改了一份内容超多的PPT,效果超级赞!!...

微信扫码观看全套Excel、Word、PPT视频作者&#xff1a;宋雪贤 来源&#xff1a;PPT进化论(ID&#xff1a;PPTjinhualun)哈喽&#xff0c;大家好&#xff0c;不知道您看过《我花了3个小时&#xff0c;为京东修改了一份PPT&#xff0c;效果好到惊人&#xff01;》这篇案例修改文…

MySQL千万级别大表如何优化?

当MySQL单表记录数过大时&#xff0c;增删改查性能都会急剧下降&#xff0c;可以参考以下步骤来优化&#xff1a; 单表优化 除非单表数据未来会一直不断上涨&#xff0c;否则不要一开始就考虑拆分&#xff0c;拆分会带来逻辑、部署、运维的各种复杂度&#xff0c;一般以整型值…

linux c 调用python_C程序调用Python脚本

一般调用步骤Py_Initialize(); //初始化Python环境PyImport_ImportModule("test"); // 载入python模块PyObject_GetAttrString(g_pModule,"test1"); //获得相应Python函数的PyObjectPyObject_CallFunction(test1,"i,s",2,e); //调用Python相应的…

命令测试post_【第2088期】前端中台化,把格局做大——NodeJS 和测试服务探索

前言今日早读文章由《React状态管理与同构实战》作者LucasHC投稿分享。正文从这开始~~近些年&#xff0c;「NodeJS 应该如何在公司业务中真实落地 」这类问题屡见不鲜。自从 2009 年 NodeJS 诞生之后&#xff0c;抢尽风头&#xff0c;圈粉无数。但一定有工程师不禁要质疑「Node…

Go类型转换

由于Go语言不存在隐式类型转换&#xff0c;因此所有的类型转换都必须显式的声明。 string、int、float类型相互转换 string转其他 string转成int&#xff1a; int, err : strconv.Atoi(string) string转成int64&#xff1a; // 参数1&#xff1a;带转换字符串&#xff0c;/…

linux tee 重定向_快乐的linux命令行-重定向

整理自《快乐的linux命令行一书》。linux系统版本&#xff1a; Ubuntu 17.04本章&#xff0c;我们将介绍命令行最酷的特性&#xff0c;叫做I/O重定向&#xff0c;通过这个工具&#xff0c;可以重定向命令的输入输出&#xff0c;命令的输入来自文件&#xff0c;而输出也存到文。…

Java 诊断工具 Arthas 常见命令

基本概念 云原生这么多微服务&#xff0c;当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具&#xff0c;深受开发者喜爱。在线排查问题&#xff0c;无需重启&#xff1b;动态跟踪 Java 代码&#xff1b;实时监控 JVM 状态。Arthas 支持 JDK 6&#xff0c…

28和lba48命令格式区别_编译Sass(命令行)

本文作者&#xff1a;开课吧无忧图文编辑&#xff1a;开三金sass编译有很多种方式&#xff0c;如命令行编译模式、编辑器自动编译、编译软件koala、sass-loader等。今天我们就先来看第一种&#xff1a;命令行编译刚才我在test文件夹里面已经建立了一个style.scss文件&#xff0…

JAVA基础编程代码50个

【程序1】 题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子对数为多少&#xff1f; 程序分析&#xff1a; 兔子…

爬虫软件python功能_Python 网络爬虫程序详解

#!/usr/bin/python #调用pythonfrom sys import argv #导入sys是导入python解释器和他环境相关的参数from os import makedirs,unlink,sep  #os主要提供对系统路径&#xff0c;文件重命名和删除文件所需的函数#makedirs是创建递归文件夹的函数。#比如说我们要创建一个新的目录…

价钱转换python_如何在python中转换货币?

我正在做一个虚拟助手项目。我想让它告诉我其他货币的美元汇率。我用beauthoulsoup编写了以下代码&#xff0c;它从给定的网站获取数据&#xff0c;对其进行解析并在命令行中打印结果供我阅读。但这只是美元对巴基斯坦卢比。如何修改程序&#xff0c;使其接受任何货币并告诉我该…

char qt 转unicode_Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题...

2012-03-22 14:00175人阅读评论(0)代码如下&#xff1a;如果不不设全局的字符集是utf-8&#xff0c;那么网上一般的方法是可以转的。如下程序中 #define DD 1的情况下&#xff1b;但是如果设置了全局的utf-8&#xff0c;再用以前的方法&#xff1a;QByteArraybaaaa.toLatin1();…

计算机图形学考试题及答案_计算机图形学考试题及答案

3、在图形文件中&#xff0c;常用来描述图形元素(点&#xff0c;线&#xff0c;圆&#xff0c;弧等)&#xff1b;而在光栅扫描图形显示器中&#xff0c;采用显示所有图形。4、当三维物体用透视变换方程投影到观察平面上&#xff0c;物体中不与观察平面平行任一簇平行线投影成收…

子窗体中组合框联动_一张表实现组合框联动

嗨&#xff0c;大家中午好&#xff01;最近&#xff0c;有网友给我私信&#xff0c;想要一个联动的示例&#xff0c;一个有关于部门联动的操作。其实关于联动的操作有很多&#xff0c;可以是组合框的联动&#xff0c;列表框联动&#xff0c;组合框与列表框也可以联动&#xff0…

中如何实现文字转语音_录音转文字、文字转语音,学会这一招就够了!手把手教你如何操作...

阅读文章时候想着有人可以把文章读给我听就好了&#xff0c;写作时想着语音直接可以转换成文字就好了&#xff0c;大家是不是有时会突然冒出这样的想法&#xff1f;七十这些看似天真的想法&#xff0c;还真的有办法解决&#xff0c;这里就手把手教你如何操作才能将的文字转换成…

图像 理想低通滤波_图像处理之滤波(下)

[toc]目录一、常规滤波低通高通带通带阻二、非局部均值滤波三、维纳滤波四、卡尔曼滤波前言所谓滤波&#xff0c;其实就是从混合在一起的诸多信号中提取出所需要的信号。信号的分类&#xff1a;确定型信号&#xff0c;可以表示为确定的时间函数&#xff0c;可确定其在任何时刻的…