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;
}
}

LeetCode_Maximum Subarray | Maximum Product Subarray的更多相关文章

  1. 求连续最大子序列积 - leetcode. 152 Maximum Product Subarray

    题目链接:Maximum Product Subarray solutions同步在github 题目很简单,给一个数组,求一个连续的子数组,使得数组元素之积最大.这是求连续最大子序列和的加强版,我们 ...

  2. LeetCode: Maximum Product Subarray && Maximum Subarray &子序列相关

    Maximum Product Subarray Title: Find the contiguous subarray within an array (containing at least on ...

  3. LeetCode Maximum Product Subarray(枚举)

    LeetCode Maximum Product Subarray Description Given a sequence of integers S = {S1, S2, . . . , Sn}, ...

  4. 【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大

    Add Date 2014-09-23 Maximum Product Subarray Find the contiguous subarray within an array (containin ...

  5. leetcode 53. Maximum Subarray 、152. Maximum Product Subarray

    53. Maximum Subarray 之前的值小于0就不加了.dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值. 动态规划的方法: class Solution { public: ...

  6. 【刷题-LeetCode】152 Maximum Product Subarray

    Maximum Product Subarray Given an integer array nums, find the contiguous subarray within an array ( ...

  7. 152. Maximum Product Subarray - LeetCode

    Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的 ...

  8. [LeetCode] Maximum Product Subarray 求最大子数组乘积

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. [LeetCode]152. Maximum Product Subarray

    This a task that asks u to compute the maximum product from a continue subarray. However, you need t ...

随机推荐

  1. python计算机视觉项目实践

    这是一个贝叶斯模型的计算机视觉小项目.希望大家通过这个简单的项目知道一般的计算机视觉项目是怎样操作的. 我先讲题目放在这里希望有兴趣的童鞋花一周的时间思考并用python实现.一周以后我来发布我的详细 ...

  2. 【oneday_onepage】——Tastes differ!

    You know Ian and Felton can be really boring sometimes. They're always arguing, like. like children. ...

  3. ECS Linux服务器xfs磁盘扩容

    ECS Linux服务器xfs磁盘扩 ECS Linux服务器xfs磁盘使用阿里云官方提供的磁盘扩容方法扩容会有报错: [root@iZ28u04wmy2Z ~]# e2fsck /dev/xvdb1 ...

  4. mongo 杀掉慢的程序killMyRunningOps("12.23.32.21") #####这个是客户端的ip

    mongodb运维(3) db.currentOp与db.killOp命令 2018.08.12 23:55 113浏览  字号 好久没更新mongo运维这块知识了,这次介绍 db.currentOp ...

  5. 巧用style的另类写法

    看到style,不少人可能会说这个我知道,就是控件写属性的话可以通过style来实现代码的复用,单独把这些属性及其参数写成style就可以便捷的调用. <?xml version="1 ...

  6. android地址位置

    有精度纬度确定地理位置 latitude: 23.1352888---longitude: 113.3297445 调用Google API接口: URL: http://maps.google.cn ...

  7. [转]浅谈Android五大布局(二)——RelativeLayout和TableLayout

    在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局Relati ...

  8. SAP HR模块的基础数据表和增强配置

    信息类型是SAP HR模块数据单元,用于对人员数据的记录和维护,是HR的基础.信息类型按照其创建方式的不同可以分为:人事信息类型.组织信息类型.信息类型数据的维护主要在事物码PA30.PA40.po1 ...

  9. (转)TCP连接异常断开检测

    TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断 ...

  10. OpenOffice将MS docx转换成pdf文件偶数页眉不显示问题解决办法

    OpenOffice版本:4.0(Windows.Linux下测试都出现问题) MS Office版本:2007 问题描述 使用OpenOffice将MS的docx文件转换为pdf文件时,docx文件 ...