乘积最大子数组

题目链接

乘积最大子数组

题目描述

注意点

  • -10 <= nums[i] <= 10
  • nums 的任何前缀或后缀的乘积都 保证 是一个 32-位 整数

解答思路

  • 最初想到求和最大的子数组所用的贪心算法,判断包括该元素时的最大值tmp,再将当前最大值res与tmp比较,全部遍历完就可找到和最大的子数组
  • 本题由于是乘积可能由正数变为负数,由负数变为正数,所以使用动态规划的思想,遍历整个数组,求出包括任意i位置元素时的乘积最大正数和乘积最大负数,在求i + 1位置处的最大正数和最大负数时,则根据i位置的最大正数和最大负数再乘i + 1位置的元素值再与i + 1位置的元素值进行比较,找出i + 1位置的最大整数和最大负数,遍历完整个数组即可找到乘积最大子数组

代码

class Solution {public int maxProduct(int[] nums) {int tmpMin = nums[0];int tmpMax = nums[0];int res = nums[0];for (int i = 1; i < nums.length; i++) {int preMin = tmpMin;int preMax = tmpMax;tmpMin = Math.min(nums[i], Math.min(nums[i] * preMax, nums[i] * preMin));tmpMax = Math.max(nums[i], Math.max(nums[i] * preMax, nums[i] * preMin));res = Math.max(res, tmpMax);}return res;}
}

关键点

  • 动态规划的思想
  • 在计算包含i位置元素的乘积最大子数组时,不仅要尽量找到包含该位置元素时乘积的最大正数,还要进来找到包含该位置元素时乘积的最大负数(后续如果有负数相乘可能变为最大正数)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯QQ空间率先通过W3C认证

继2012年1月11日腾讯公司与万维网联盟&#xff08;World Wide Web Consortium&#xff0c;W3C&#xff09;达成战略合作关系后&#xff0c;近日国内最大的社交网络QQ空间成为腾讯旗下首个正式支持W3C的HTML5规范草案的产品。 腾讯与W3C达成战略合作关系&#xff0c;包括全方位参…

苹果叶病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)

代码运行要求&#xff1a;Torch>1.13.1即可 1.数据集介绍&#xff1a; Apple Scab类文件夹图片 Black Rot类文件夹图片 Cedar Apple Rust文件夹 healthy文件夹 2.整个项目 data文件夹存放的是未被划分训练集和测试集的原始照片 picture文件夹存放的是经hf.py对data文件夹…

恒运资本:沪指震荡跌0.55%坚守3100点,券商等板块走低,数据要素概念再活跃

23日早盘&#xff0c;两市股指低开低走&#xff0c;沪指盘中再次失守3100点&#xff0c;深成指、创业板指跌幅均超1%&#xff1b;北向资金连续流出态势&#xff0c;半日净卖出超70亿元。 截至午间收盘&#xff0c;沪指跌0.55%报3103.1点&#xff0c;深成指跌1.08%&#xff0c;创…

【Python教程】3道循环结构练习题,都会了吗?

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 练习1&#xff1a;输入一个数判断是不是素数。 from math import sqrtnum int(input(请输入一个正整数: )) end int(sqrt(num)) is_prime True for x in range(2, end 1):if num % x 0:is_prime Falsebreak if is_prime an…

离线百度地图,添加按钮点击切换卫星地图和街道地图(纯JS)

离线百度地图&#xff0c;添加按钮点击切换卫星地图和街道地图 需求代码涉及信息截图 需求 百度地图离线应用&#xff0c;网络上大部分都是不能切换地图的离线&#xff0c;只能根据配置文件填写一个类型&#xff1b;网上搜了一下没有这块添加类似在线版的可切换地图类型&#x…

vue百度地图 一进页面加载卫星图

<bm-map-type :map-types"mapType" anchor"BMAP_ANCHOR_TOP_RIGHT"></bm-map-type>data() {return {mapType:[BMAP_NORMAL_MAP, BMAP_HYBRID_MAP],}methods:{createMap({ BMap, map }) {//这句使得初始为卫星图map.setMapType(BMAP_HYBRID_MA…

百度离线地图示例之十一:混合图(街道图、卫星图)实现

前言介绍&#xff1a; 主要是基于v3.0的API版本进行的离线&#xff0c;纯内网可操作&#xff0c;基本上实现了现有90%以上的功能点&#xff0c;能兼容jpg和png格式的瓦片图层&#xff0c;实现了原生和基于Vue两个版本&#xff08;包含常用的55个示例&#xff09;&#xff0c;实…

堆中分配二维数组初始化排序

方法一&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> int getmem(char *** parry,int *depth,int *len){ int mydepth *depth; int mylen *len; char ** myarry (char **)malloc(mydepth*sizeof(char*)); for(int i0;i<…

arm内核调试仿真

qemu仿真ARM linux内核&#xff0c;支持网络协议&#xff0c;DHCP&#xff0c; telnet&#xff0c; ftp... 而且可以支持u-boot引导内核启动&#xff0c;下图为效果图&#xff1a;

ARM内核架构和SOC架构

注&#xff1a;本文资料全部来源于网络或书籍&#xff0c;同时加上个人理解。若有侵权&#xff0c;告知即删。若有错误&#xff0c;留言商讨。 0、ARM处理器功能扩展和架构演变 1、cortex A9 &#xff08;ARMv7指令集&#xff09;-----传说中的CPU 2、Exynos4412芯片框图-----…

arm linux 内核配置,Linux + ARM驱动开发环境配置(内核配置与编译)

要想编写驱动&#xff0c;首先是建立内核目录树。 ** 1、查看ARM开发板的内核版本 ** uname -a 我的arm开发板的版本是3.4.39 ** 2、安装必要的软件包 ** sudo apt-get install build-essential kernel-package libncurses5-dev sudo apt-get install ncurses-dev ** 3、下载一…

ARM 内核寄存器 和 基本汇编语言讲解

对于嵌入式开发者来说&#xff0c;了解汇编语言和内核寄存器是对内核深入理解的基础..增加 2.2 汇编伪指令 章节 2021/12/12..完善 2.3 ARM汇编指令集 2021/12/12..增加 3.1 不同编译器的反汇编 2021/12/14 ..增加 3.2 C和汇编 比较分析 …

jtag访问arm内核寄存器

jtag的原理图jtag接口访问arm Device ID code register的步骤jtag接口访问arm Device ID code register的功能验证的testbenchjtag接口访问arm Device ID code register的功能验证的波形图jtag相关注意细节jtag访问arm内核寄存器的步骤与DTR相关的协处理器指令介绍最后通过封装…

关于ARM内核经典系列ARM7/ARM9/ARM11和Cortex®-A/Cortex®-R/Cortex®-M的产品线简单介绍

目前市场上的嵌入式单片机或者Soc大部分都是ARM的内核架构&#xff0c;相信大家对Cortex-M3/Cortex-M4&#xff0c;Cortex-A53/Cortex-A73等有所耳闻。 ARM公司主要是设计处理器内核的公司&#xff0c;之前的ARM7/ARM9/ARM11被划分为经典的ARM内核&#xff1b;后面ARM公司分出…

常见前端面试之VUE面试题汇总三

7. Vue 中封装的数组方法有哪些&#xff0c;其如何实现页面更新 在 Vue 中&#xff0c;对响应式处理利用的是 Object.defineProperty 对数据进 行拦截&#xff0c;而这个方法并不能监听到数组内部变化&#xff0c;数组长度变化&#xff0c;数 组的截取变化等&#xff0c;所以需…

配置arm内核实现NFS功能

NFS介绍 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件&…

什么是arm-arm体系架构版本(指令集版本)-arm内核版本

1、什么是arm&#xff1f; arm公司&#xff1a;是英国一家电子公司的名字&#xff0c;该公司成立于1990年11月&#xff0c;是苹果电脑&#xff0c;Acorn电脑集团和VLSI Technology的合资企业。Acorn曾在1985年推出世界上首个商用单芯片RISC&#xff08;Reduced Instruction Se…

ARM内核——寄存器功能讲解

根据“ARM-thumb 过程调用标准”&#xff1a; 通用寄存器 通用寄存器包含R0到R12&#xff0c;13个寄存器 R0-R3 用作传入函数参数&#xff0c;传出函数返回值。在子程序调用之间&#xff0c;可以将 r0-r3 用于任何用途。被调用函数在返回之前不必恢复 r0-r3。如果调用函数需…

ARM内核版本

ARM架构CPU发展历程&#xff1a; &#xff08;https://en.wikipedia.org/wiki/ARM_architecture#CPU_modes&#xff09;

嵌入式芯片的硬件组成(ARM内核)

嵌入式最小硬件系统的6部分 基于ARM内核的嵌入式芯片的硬件组成 连接到系统总线上的高带宽组件主要包括&#xff1a; 存储器及控制器、电源管理与时钟控制器、中断控制器、DMA控制器、GPIO端口、互联通信组件、定时计数组件、模拟通道组件。