首页 > 其他分享 >152. 乘积最大子数组

152. 乘积最大子数组

时间:2023-10-12 13:22:36浏览次数:34  
标签:152 乘积 nums int res temp2 temp1 数组

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

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

子数组 是数组的连续子序列。

示例 1:

输入: nums = [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。

代码


class Solution {
public:
  int maxProduct(vector<int>& nums) {
  int len = nums.size(), res = nums[0];
    int prevMin = nums[0], prevMax = nums[0];
    int temp1 = 0, temp2 = 0;
    for (int i = 1; i < len; i++) {
      temp1 = prevMin * nums[i];
      temp2 = prevMax * nums[i];
      prevMin = min(min(temp1, temp2), nums[i]);
      prevMax = max(max(temp1, temp2), nums[i]);
      res = max(prevMax, res);
    }
    return res;
  }
};

标签:152,乘积,nums,int,res,temp2,temp1,数组
From: https://www.cnblogs.com/lihaoxiang/p/17759259.html

相关文章

  • 二维数组
    1.二维数组可以用行指针和列指针来表示行指针=数组指针;二维数组名就是第一行的首地址数组指针加1表示跳过整个指向的数组。 2.数组指针如何访问数组成员空间?p指向的是数组的地址,也就是&数组名,那么*p就是对取地址后的数组名再*操作,因为&与*为互逆操作,所以此时*p就等同于......
  • 树状数组模板
    namespaceBIT{ inttr[/*数据范围qwq*/],N; voidinit(intn){N=n;for(inti=1;i<=n;i++)tr[i]=0;} voidupdate(intx,inty){for(;x<=N;x+=(x&(-x)))tr[x]+=y;} intquery(intx){intres=0;for(;x;x-=(x&(-x......
  • mysql 删除数组 json 字段中的某个指定值
    例:SELECTcar_imgFROMlogistics_car_infoWHEREcar_id=2--结果为:["1","2","3","4"]SELECTJSON_SEARCH(car_img,'one','4')FROMlogistics_car_infoWHEREcar_id=2--结果为:"$[3]"SELE......
  • shell数组
    数组数组定义name=(value0value1value2...)name=($(生成列表的命令))echo"${name[0]}"#输出下标为0的元素ps:数组下标从0开始1)对数组元素进行遍历foriin${name[@]}doecho$idone#在数组中@与*等同2)输出元素的下标echo${!name[@]}3)查看最后一个元......
  • C++ - 数组
    5数组5.1概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个==数据元素都是相同的数据类型==特点2:数组是由==连续的内存==位置组成的 5.2一维数组一维数组 5.2.1一维数组定义方式一维数组定义的三种方式:数据类型数组名[数组长度];......
  • 2023-10-11:用go语言,一个数字n,一定要分成k份, 得到的乘积尽量大是多少? 数字n和k,可能非常
    2023-10-11:用go语言,一个数字n,一定要分成k份,得到的乘积尽量大是多少?数字n和k,可能非常大,到达10^12规模。结果可能更大,所以返回结果对1000000007取模。来自华为。来自左程云。答案2023-10-11:大体过程如下:算法1:暴力递归1.首先判断k是否为0或者n是否小于k,若是则返回-1。2.调用递归函数pr......
  • 2023-10-11:用go语言,一个数字n,一定要分成k份, 得到的乘积尽量大是多少? 数字n和k,可能非常
    2023-10-11:用go语言,一个数字n,一定要分成k份,得到的乘积尽量大是多少?数字n和k,可能非常大,到达10^12规模。结果可能更大,所以返回结果对1000000007取模。来自华为。来自左程云。答案2023-10-11:大体过程如下:算法1:暴力递归1.首先判断k是否为0或者n是否小于k,若是则返回-1。2.调......
  • 【面试题】JS的14种去重方法,看看你知道多少(包含数组对象去重)
    前言JavaScript数组是一种特殊的对象,用于保存多个值在一个连续的内存空间中,也正是因为如此,我们在数组中存储大量数据,但是巨大的数据量难免会有重复的,但我们并不需要重复的数据,这个时候就需要就数组进行去重,来达到每个数组都是唯一的,这样的数据才是我们想要的。数组中值类型数据去重......
  • 【LC】2875. 无限数组的最短子数组
    Link题意见题链。思路自己没想出来。参考灵神题解取思路。自己写出来的。没有用滑动窗口用了前缀和。代码packagemainfuncminSizeSubarray(a[]int,targetint)int{ n:=len(a) vara2[]int a2=append(a2,a...) a2=append(a2,a...) prefixSums:=make(......
  • 记录python语言的数组去重并输出
    deffind_duplicates(arr):seen=set()duplicates=[]fornuminarr:ifnuminseen:duplicates.append(num)seen.add(num)returnduplicatesarr=['1000223453','1000227458','1000223......