最大连续子序列和,以及开始、结束下标(Java)

2023-11-17

对一个有n个元素的数组,求最大的连续子数组的和,并求其开始、结束下标。
数组的元素必然有正数也有负数才有意义,如果全是正数,那最大的子数组就是本身;如果全部为负数,那最大子数组就是空数组。
例如下面的数组,其最大子数组序列和为187,子数组为X[2,..,6]:

31 -41 59 26 -53 58 97 -93 -23 84

先给定一个temp,让它从头开始加每个数字,temp小于0时,我们重新开始计算,另temp = 0,让开始的下标从这个位置开始。再记一个max,是我们用来存结果的,如果temp大于max,则让max = temp,让end下标移到这个位置.

public void maxSum(int[] nums) {
        int start = 0;
        int end = 0;
        int max = 0;

        int temp = 0;
        int ts = 0;
        for(int i = 0; i < nums.length; i++) {
            temp += nums[i];
            if(temp < 0) {
                ts = i + 1;
                temp = 0;
            } else {
                if(temp > max) {
                    start = ts;
                    end = i;
                    max = temp;
                }
            }
        }

        System.out.println("maxSum = " + max + ", start : " + start + ", end = " + end);
    }

时间复杂度O(N)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大连续子序列和,以及开始、结束下标(Java) 的相关文章

随机推荐

  • Docker网络体系结构:设计可扩展、可移植的Docker容器网络

    原文地址 译者 本人翻译水平有限 目的仅是为了学好Docker 如有错误请见谅 翻译版本 v1 01 将不断优化翻译质量 本文包含以下内容 Docker容器就是将应用及其所依赖运行环境的完整文件系统打成一个包 包括所需代码 运行库 系统工具
  • 一文读懂人脸识别技术

    2019 08 27 17 06 26 本文内容涵盖人脸识别发展历程 市场研究 核心技术 商业应用以及产业落地 个人看法等干货研究 注意 本文干货满满 约有2万7千字 强烈建议大家先收藏后学习 01 发展史 1 人脸识别的理解 人脸识别 F
  • DJANGO增删改查

    https www cnblogs com yuanlianghong p 10987877 html 一 Django的工作流 1 用户通过浏览器输入相应的 URL 发起 HTTP 请求 一般是 GET POST 2 Django 接受到
  • 微信小程序:初识微信小程序和前端

    一 前期准备工作 1 申请开发微信小程序 登录微信公众平台 gt 点击 小程序 gt 点击 前往注册 gt 注册成功即可 2 下载微信开发者工具 小程序文档 gt 工具中的下载 gt 下载自己需要的版本 3 在开发者工具中创建项目 这个当中
  • RabbitMQ的高级特性

    RabbitMQ的高级特性 在项目中 有一些无需即时返回且耗时的操作 我们可以将其提取出来 做异步处理 从而节省服务器的请求响应时间 从而提高系统的吞吐量 这就需要使用到MQ 而常见的RabbitMQ就是重中之重 之前说了他的几个常见的用处
  • WebSocket 的使用,和客户端断电,服务器检测断开连接

    WebSocket 的使用 和客户端断电 服务器检测断开连接 服务器用WebSocketServlet 实例化自定义的MessageInbound web xml中配置socket
  • ext4 buddy块分配算法源码剖析

    概述 ext4 buddy块分配算法的函数是ext4 mb regular allocator 阅读本文之前需要先看下ext4 mballoc之buddy算法 nginux的博客 CSDN博客 ext4 mb regular allocat
  • YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

    文章目录 摘要 论文翻译 摘要 1 简介 2 相关工作 3 方法 3 1 总体架构 3 2 AttnConv 3 3 不同的局部感知方式 3 4 实现细节 4 实验 4 1 ImageNet1K分类 4 2 COCO目标检测 4 3 ADE
  • C 实现Window/DOS 键盘监听事件

    今天是重新复习C语言实现的第一天 今天想编写C 对Windwos Dos 键盘事件的学习 但是我在安装Visual Studio 2022 没有安装MFC 框架 今天记录下VS 追加 MFC框架 Visual Studio 2022 追加M
  • 基于opencv3的人脸检测

    目前opencv3中已经有人脸检测的类了 只要调用函数库的类就行 该程序需要两个xml文件 分别是haarcascade frontalface alt xml和haarcascade eye tree eyeglasses xml 它们分
  • php安装部署及优化

    目录 PHP源码编译 php启动与nginx整合 php功能模块的扩展 php添加memcache功能模块 构建Nginx高速缓存 tomcat结合memcache PHP源码编译 https www php net 下载软件包 安装解压工
  • 【下资源】全网独家首发2014传智播客三层架构及餐饮管理系统项目

    核心技术课程 三层架构原理 手写三层 自己动手代码生成器 商业级代码生成器 三层架构应用案例 NPOI MD5 WinForm高级应用 常用WinForm相关设计模式 数据库设计工具PowerDesigner高级应用 源代码管理 团队配合做
  • 【更新中…】Matlab simulink建模与仿真

    本文为学习笔记 视频来源 https www bilibili com video BV1L7411a7uL Matlab simulink建模与仿真 1 初始simulink 1 1 simulink简介 1 1 1 matlab与sim
  • error: static assertion failed: Type is not registered, please use the Q_DECLARE_METATYPE macro to m

    error static assertion failed Type is not registered please use the Q DECLARE METATYPE macro to m 解决方案 报错信息如下 调用了类的静态函数导
  • 【docker】CMD ENTRYPOINT 区别 终极解读!

    昨天用Dockerfile来启动mongodb的集群 启动参数 replSet死活没执行 最后就决定研究一哈cmd和entrypoint 但是上网看了一些资料个人觉得讲的不好 还是没有说出根本的东西 决定自己研究并且整理一哈 首先上dock
  • Linux系统下使用socat将串口映射到TCP服务器端口

    首先需要安装socat 安装方法即是 apt get install socat 或 yum install socat 然后使用以下命令进行映射 socat TCP LISTEN 8899 fork reuseaddr FILE dev
  • 华为OD机试 - 可以组成网络的服务器(Java)

    题目描述 在一个机房中 服务器的位置标识在 n m 的整数矩阵网格中 1 表示单元格上有服务器 0 表示没有 如果两台服务器位于同一行或者同一列中紧邻的位置 则认为它们之间可以组成一个局域网 请你统计机房中最大的局域网包含的服务器个数 输入
  • Java进阶知识

    今天分享有关java方面的知识 Paradigm 除了Java语言基础 通常在每种语言中还有很多paradigm 这些paradigm往往是衡量老鸟和新手的地方 比如函数命名 异常处理 泛型等等 下面用异常处理的两种类型来说明 笔者见过很多
  • JVM知识点

    JVM知识点 概念 java内存模型 线程私有 内存溢出和内存泄漏 线程共享区域 存在GC 类加载 类加载机制 双亲委派模型 垃圾回收GC 概念 如何判断一个对象是垃圾 有两种算法 1 引用计数算法 2 可达性分析算法 JVM采取 垃圾回收
  • 最大连续子序列和,以及开始、结束下标(Java)

    对一个有n个元素的数组 求最大的连续子数组的和 并求其开始 结束下标 数组的元素必然有正数也有负数才有意义 如果全是正数 那最大的子数组就是本身 如果全部为负数 那最大子数组就是空数组 例如下面的数组 其最大子数组序列和为187 子数组为X