乘积最大子数组 题目: 给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2:输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解题思路:因为有负数所以会有负负得正的情况,
原创 2023-06-15 14:10:01
114阅读
动态规划数组没说只能有一个,同时要擅于看待正负数之间的符号关系,有时候负数也可能会产生极大值。
原创 2022-03-29 14:45:27
10000+阅读
问题: # 给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),# 并返回该子数组所对应的乘积。 # # # # 示例 1: # # 输入: [2,3,-2,4]# 输出: 6# 解释: 子数组 [2,3] 有最大乘积 6。 方法:动态规划,构建两个dp, ...
转载 2021-10-17 20:30:00
192阅读
2评论
dp[i]:用到了nums[i]连续子数组最大和用到了nums[i]连续子数组最大和dp[i],要么
原创 2023-04-01 08:21:44
89阅读
Title给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。Solve动态规划如果当前位置是一个负数的话,那么我们希望在它前面一个位置的某一段的积也是个负数,并且尽可能小,负负得正。如果当前位置是一个正数的话,那么
原创 2021-08-10 10:06:44
101阅读
这是我参与更文挑战的第15天,活动详情查看: 更文挑战 $\color{red}{如果你对动态规划不熟悉,望转到该篇~}$ 肝了好多天-动态规划十连-超细腻解析|刷题打卡 $\color{green}
转载 2021-07-06 10:04:12
131阅读
最大子数组和的状态转移方程是dp[i]=max(dp[i-1]+nums[i],nums[i]) 其中dp[i]表示以nums[i]结尾的最大子数组的和。所以以nums[i]结尾的最大子数组和无非就是要么加入前边的要么单独自己。 但是乘积最大子数组不满足这样的转移方程 dp[i]不一定是由dp[i- ...
转载 2021-09-20 15:48:00
157阅读
2评论
题目: 其为动态规划,与上一题的线性求和的方法十分的类似,主要是用dp数组去保存当前最大值,最大值可以为前一个dp[i-1]去运算得到,或者自己重新开始,所以要进行比较,但因为这是乘法,要考虑到正负数的问题 负数越小,那么该数字的绝对值是越大的,所以,如果本身是负数的话,就要求找到其最小值与之相乘, ...
题目:给你一个整数数组nums,请你找出数组乘积最大的连续子数组(该
原创 2020-06-15 23:30:09
90阅读
package leetcode; public class demo_152 { public int maxProduct(int[] nums) { int[] maxdp=new int[nums.length]; int[] mindp=new int[nums.length]; maxd ...
转载 2021-07-24 15:26:00
72阅读
2评论
一道很有纪念意义的动态规划题目。动态规划的核心在于找到最优子结构,自己写的动态规划中,使用了近乎暴力的计算方法,用一个二维数组去存储乘积。固然可以,但是和动态规划的内核是不符的。所以需要在遍历的过程中维护当前节点之前的最大乘积和最小乘积,同时维护两个是因为当前节点值可能为负数,所以乘上最小乘积有可能 ...
转载 2021-09-25 19:41:00
120阅读
2评论
Title给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。​示例 1:​输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。​示例 2:​输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 Solve​动态规划​如果当前位置是一个负数的话
原创 2022-03-23 17:26:01
77阅读
给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2: 输入: [-2,0,-1]输出: 0解释: 结果不能为 2。
转载 2021-08-03 15:00:01
85阅读
2评论
【题目描述】给你一个整数数组 ​​nums​​ ,请你找出数组乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。子数组 是数组的连续子序列。​​https://leetcode.cn/problems/maximum-product-subarray/?favorite=2c
原创 2023-01-04 21:26:33
102阅读
【代码】Leetcode152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2: 输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 ...
转载 2021-04-11 23:28:00
42阅读
2评论
152. 乘积最大子数组难度中等963给你一个整数数组 nums ,请你找出数组乘积
原创 2022-10-28 12:20:09
52阅读
#define max(a,b) ((a)>(b))?(a):(b) #define min(a,b) ((a)<(b))?(a):(b) int maxProduct(int* nums, int numsSize){ int i, maxVal=nums[0], res=nums[0], min
转载 2020-12-23 14:35:00
79阅读
2评论
思路 标签:动态规划 遍历数组时计算当前最大值,不断更新 令imax为当前最大值,则当前最大值为 imax = max(imax * nums[i], nums[i]) 由于存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值imin,imin = min(imin * nums[i], nums[i]) 当负数出现时则imax与
原创 2023-01-21 07:32:59
79阅读
再深入的按照逻辑进行分析就能解决问题了!
原创 2022-09-17 00:27:06
44阅读
  • 1
  • 2
  • 3
  • 4
  • 5