LeetCode_Maximum Subarray | Maximum Product Subarray
Maximum Subarray
一、题目描写叙述
就是求一个数组的最大子序列
二、思路及代码
首先我们想到暴力破解
public class Solution {public int maxSubArray(int[] nums) {int sum = Integer.MIN_VALUE;for(int i=0; i<nums.length; i++)for(int j=i+1; j<nums.length; j++) sum = Math.min(nums[i]+nums[j], sum);return sum;}
}
果然TLE了。于是要找到合适的时间复杂度。所以再寻找时间复杂度小于N平方的。
所以我们想到既然要求最大子序列,那么我们在扫面累加数组元素时,推断之前的元素是否小于0。假设小于0。说明不用累加了,由于会“拖累”后边求和的值。于是演变成了动态规划问题。递推公式就是maxSum=Math.max(maxSum,curSumi)。
当中 curSumi 就是到第 i 个数字时最大的和值。
public class Solution {public int maxSubArray(int[] nums) {int sum = nums[0], maxSum = nums[0];for(int i=1; i<nums.length; i++) {if(sum < 0) sum = 0; //推断之前的sum能否够利用sum += nums[i];maxSum = Math.max(sum, maxSum);}return maxSum;}
}
Maximum Product Subarray
一、题目描写叙述
二、代码及思路
思路与上道题有所不同。这里要求是求乘积,那么乘积有个最简单的性质:负负得正;
那么假设套用上面那道题的思路,当前最小值假设是负值,假设下一个也是负值。就非常可能成为一个非常大的正值。
所以我们这里须要两个保存当前最小值和最大值的局部变量。
public class Solution {public int maxProduct(int[] nums) {int localMaxProduct = nums[0], localMinProduct = nums[0], maxProduct = nums[0]; for(int i=1; i<nums.length; i++) {int copy_localMinProduct = localMinProduct;localMinProduct = Math.min(Math.min(nums[i]*copy_localMinProduct, nums[i]*localMaxProduct), nums[i]);localMaxProduct = Math.max(Math.max(nums[i]*copy_localMinProduct, nums[i]*localMaxProduct), nums[i]);maxProduct = Math.max(localMaxProduct, maxProduct);}return maxProduct;}
}
转载于:https://www.cnblogs.com/blfbuaa/p/7371563.html
LeetCode_Maximum Subarray | Maximum Product Subarray相关推荐
- 【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大
Add Date 2014-09-23 Maximum Product Subarray Find the contiguous subarray within an array (containin ...
- LeetCode 152. Maximum Product Subarray
152. Maximum Product Subarray Find the contiguous subarray within an array (containing at least one ...
- 【LeetCode】152. Maximum Product Subarray
题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...
- Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- LeetCode Maximum Product Subarray(最大子数组乘积)
Find the contiguous subarray within an array (containing at least one number) which has the large ...
- 子数组的最大乘积 Maximum Product Subarray
为什么80%的码农都做不了架构师?>>> 问题: Find the contiguous subarray within an array (containing at lea ...
- LeetCode: Maximum Product Subarray
很久没练只能看别人代码了 1 class Solution { 2 public: 3 int maxProduct(int A[], int n) { 4 if (n == 0) return 0; ...
- leetcode 152. Maximum Product Subarray | 152. 乘积最大子数组(Java)
题目 https://leetcode.com/problems/maximum-product-subarray/ 题解 class Solution {public int maxProduct( ...
- LeetCode Maximum Product Subarray 解题报告
LeetCode 新题又更新了.求:最大子数组乘积. https://oj.leetcode.com/problems/maximum-product-subarray/ 题目分析:求一个数组,连续子 ...
- LeetCode 152. Maximum Product Subarray--动态规划--C++,Python解法
题目地址:Maximum Product Subarray - LeetCode Given an integer array nums, find the contiguous subarray w ...
最新文章
- 转:c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
- 使用 udev 进行动态内核设备管理(转自suse文档)
- ToString() 格式化字符串总结
- ECMA学习小结(3)——constructor 和 prototype
- Exynos4412 IIC总线驱动开发(二)—— IIC 驱动开发
- 俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长
- 实现贝叶斯分类器_从头开始在Python中实现高斯朴素贝叶斯
- Android中的ANR问题
- creo 计算机配置,creo电脑配置要求 creo电脑配置推荐
- android pie mi 3 tab,前沿科技:三星Galaxy Tab S3和Tab A(2017)正在获得Android 9.0 Pie更新
- mac邮箱无法验证账户名和密码问题
- 170817 WarGames-Natas(15)
- JAVA实训8:期末总结
- 路由器 dhcp服务器的作用,你可知道在路由器中DHCP是什么吗
- 别害羞,开源社区真的很需要你,教你如何参与开源社区~
- 冬瓜哥对时间和空间的理解方式—时空参悟(下)
- 小程序组件Painter的使用心得
- 年会模板汇总:PPT、策划案、游戏节目、流程、邀请函、背景音乐、主题词
- lnk306dn引脚功能_LNK306DN LED卤素灯驱动器开关电源
- 二级Python 考试,不知道这些事,你就过不去了。
热门文章
- 计算机网络工程税率多少,弱电工程增值税6%、9%、13%税率怎样选择?
- python检测excel是否打开_Python: 如何判断远程服务器上Excel文件是否被人打开
- python房屋租赁系统的设计与实现_基于ssh的房屋租赁系统的设计与实现(含源文件)...
- JavaScript学习笔记 - 提升
- Activity与Service之间交互并播放歌曲
- IOS开发—UIGestureRecognizer Tutorial in iOS 5: Pinch
- Android ImageButton单击切换按钮图片效果
- 安装Office SharePoint Server 2010实战
- CISCO寄存器配置与说明
- SAMBA最简单的配置方法