力扣:乘积最大子数组

2023-11-16

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

class Solution {
    public int maxProduct(int[] nums) {
        int res = nums[0];
        int imax = nums[0];
        int imin = nums[0];
        for(int i=1; i<nums.length; i++){
            if(nums[i] < 0){ 
              int tmp = imax;
              imax = imin;
              imin = tmp;
            }
            imax = Math.max(imax*nums[i], nums[i]);
            imin = Math.min(imin*nums[i], nums[i]);
            res = Math.max(res, imax);
        }
        return res;
    }
}

运行结果

 思路:imax和imin记录每个数组元素相乘的最大最小值,res与每次计算的最大值比较,保留每次计算的最大值。

每次遇到负数交换最大值和最小值,第一次遇到负数,交换最大值最小值,是因为负数与小的正数乘大,与大的正数相乘小;第二次遇到负数交换是因为现在的最大最小值都为负数,与下面的负数相乘,与小的负数相乘获得大的正数,与大的负数相乘获得小的正数。

class Solution {
    public int maxProduct(int[] nums) {
        int res = Integer.MIN_VALUE;
        //边界条件
        if (nums == null || nums.length == 0) {
            return 0;
        }
        if (nums.length == 1) {
            return nums[0];
        }
        for (int i = 0; i < nums.length; i++) {
            int max = nums[i];
            if (max > res) {
                res = max;
            }
            for (int j = i + 1; j < nums.length; j++) {
                max = max * nums[j];
                if (max > res) {
                    res = max;
                }
            }
        }
        return res;
    }
}

运行结果

 思路:该方法使用两个for循环,找出每次便利计算出的最大数。

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

力扣:乘积最大子数组 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • C语言:通过函数指针来完成两个数的加减乘除(函数指针当做参数使用)

    main c Function pointer Created by mac on 15 8 2 Copyright c 2015年 All rights reserved 要求 将函数指针做参数来求两个整数的和 差 积 商 知识点 函数指
  • 【深度学习与计算机视觉】10、深度学习框架Tensorflow

    Tensorflow
  • python做的多激光雷达外参标定程序(初版本 完整版见专栏)

    查阅了一番资料和现有的代码后发现 现在的多个激光雷达之间的标定程序都是ROS框架下面的 并且都是C 代码 需要安装的依赖也比较复杂 于是自己写了一个python版本的标定程序 依赖非常简单 Windows系统也可以运行 并且代码简单 扩展性
  • 网络安全—DDOS和CC攻击的区别

    DDOS和CC攻击的区别 1 攻击简介 DDOS 分布式拒绝服务攻击 通过向目标发送大量数据包 耗尽其带宽 来使目标无法可用 CC攻击 DDOS的一种 也可以理解为应用层DDOS攻击 利用大量代理服务器对目标计算机发起大量连接 导致目标服务
  • 华中师范大学2018年874

    lt 对数组A的N个整数从小到大进行连续编号 输出各个元素的编号 例如对数组 A 5 3 4 7 3 5 6 则输出为 3 1 2 5 1 3 4 include
  • C++ 模板的显示具体化

    C 没有办法限制类型参数的范围 我们可以使用任意一种类型来实例化模板 但是模板中的语句 函数体或者类体 不一定就能适应所有的类型 可能会有个别的类型没有意义 或者会导致语法错误 例如有下面的函数模板 它用来获取两个变量中较大的一个 temp
  • maven的5种打包方式,终有一款适合你(一)

    话不多说 上主题 1 1 概述 在讲打包方式之前 首先来说最近踩到的坑 在idea新建的maven项目 在pom文件中会自动生成一段插件的管理器 我使用maven打包插件maven assembly plugin 将其配置添加到
  • Jetson-nano:制作TF卡启动

    旧Nano可以直接导入镜像至TF卡 然后插入卡槽即可启动系统 但目前旧的英伟达已经停止生产底板 现在市面上都是带emmc的核心板 底板是由其他厂商进行扩容自行生产的 因为官方自带的emmc只有16G 如果做扩展使用 就要使用到扩容的TF卡
  • 零基础必知8个测试工具

    1 Fiddler 网络抓包工具 Fiddler在测试中一般用于篡改接口请求或接口返回数据以测试前后端业务场景或对异常功能的兼容 它能监控进出设备的http协议请求 并且支持重新编辑请求与返回 从而测试前端页面对不同结果的反应 官网下载地址
  • map遍历的4种方式

    map遍历的方式有4种 1 使用for循环遍历map 2 使用迭代器遍历map 3 使用keySet迭代遍历map 4 使用entrySet遍历map 创建一个Map集合 Map
  • 使用Java8的Stream进行多字段排序以及剔除非空字段排序

    使用 Stream的sort 方法 并结合 Comparator 类 进行排序 主要解决以下两个问题 一 当某个字段为空时 怎么进行排序 使用 Comparator nullsFirst 或者 Comparator nullsLast 进行
  • 出现"/var/lib/mysql/mysql.sock“不存在的解决方法

    出现 var lib mysql mysql sock 不存在的解决方法 SQLSTATE HY000 2002 Can t connect to local MySQL server through socket var lib mysq
  • gRPC运行过程与流量控制机制

    文章目录 gRPC运行过程与流量控制 gRPC中的流量控制 讲解思路 BDP采样流量控制 结构分析 过程分析 Connection Level 流量控制 结构分析 过程分析 Stream level流量控制 结构分析 过程分析 总结 参考
  • 入门必看~~~~~群智能算法之鲸鱼优化算法(WOA)

    前言 鲸鱼优化算法 WOA 也是一种元启发式优化算法 一种新的模拟座头鲸狩猎行为的元启发式优化算法 鲸鱼优化算法 WOA 目前的工作与其他群优化算法相比的主要区别在于 采用随机或最佳搜索代理来模拟捕猎行为 并使用螺旋来模拟座头鲸的泡泡网攻击
  • A*算法 解决(有环图)第k短路径长度(C++)

    算法竞赛 file author jUicE g2R qq 3406291309 彬 bin 必应 一个某双流一大学通信与信息专业大二在读 brief 一直在算法竞赛学习的路上 copyright 2023 9 COPYRIGHT 原创技术
  • 11g降到10g方法

    Oracle11g数据库导入Oracle10g数据库 EXPDP方法 EXPDP要注意的是 导出的文件是在服务器端的 DATA PUMP DIR目录里 11g备份 导入10g的时候会抛错 直接阻止导入 一 在11g服务器上 使用expdp命
  • 【计算机网络】网络故障排查的基本思路

    网络故障排查的基本思路 1 检查物理链路是否有问题 2 查看本机IP地址 DNS 路由的设置是否有问题 3 测试网关或路由器的通畅情况 先测试网关再测试路由器 一级一级的测试 4 测试ping公网ip的通畅情况 平时多记几个外部IP 5 测
  • 随机颜色生成

    脚本挂在游戏物体上 并且物体要有材质 using UnityEngine using System Collections public class RandomColor MonoBehaviour Use this for initia
  • python二维数组切片举例

    python二维数组切片举例 案例数据 data 为下面的二维数组 1 2 3 4 5 6 7 8 9 说明 逗号 分隔各个维度 表示各个维度内的切片 只有 表示取这个维度的全部值 若没有逗号 则默认是对行进行切片 类似于二维数组 data
  • 力扣:乘积最大子数组

    给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组 该子数组中至少包含一个数字 并返回该子数组所对应的乘积 测试用例的答案是一个 32 位 整数 class Solution public int maxProduct in