本内容为最大子序列的求和和求积。采用DP的思路,

当前值加上小于之前值,则从该节点重新算起。

这个代码只能返回其结果值,但不能返回最后的子序列(待修改)。

class Solution:
def maxSubArray(self,arr): #最大子数组和的DP求解
if not arr:return
cur_sub,max_sub = arr[0],arr[0] #记录当前集合和最大集合
res = [arr[0]]
for i in range(1,len(arr)): #从第二个开始遍历
if arr[i] + cur_sub > arr[i]: #如果说加上下一个数比当前值大,那么最大的会在当前值后面
cur_sub += arr[i] #更新当前值
max_sub = max(cur_sub,max_sub) #比较得到当前和最大的较大值
res.append(arr[i]) #有误,记录其最大的值
else: #否则的话就小于,则从当前值开始算起
res = []
max_sub = max(arr[i],cur_sub,max_sub,cur_sub+arr[i])#从当前的候选值选个最大的
cur_sub = arr[i] #从当前开始算起
res.append(arr[i]) #记录该子数组的节点
return max_sub,res
def maxSubArry_1(self,arr):
if not arr:return
for i in range(1,len(arr)):
arr[i] = max(arr[i],arr[i]+arr[i-1])
print(arr[i],end=',')
return max(arr)
def maxProduct(self,nums): #子数组求积
if not nums: return 0
res, curmax, curmin = nums[0], nums[0], nums[0] #当前最大和最小
for i in range(1, len(nums)): #从第二个开始遍历
curmax = curmax * nums[i] #与当前值计算看乘积,求最大
curmin = curmin * nums[i] #如果是负数,计算最小值
curmax = max(curmax, curmin, nums[i]) #选一个最大的
curmin = min(curmax, curmin, nums[i]) #选一个最小的
res = curmax if curmax > res else res #最终的结果缓存在res里面
return res if __name__ == '__main__':
solution = Solution()
arr = [-2,1,-3,4,-1,2,1,-7,-5,4]
resSub,res = solution.maxSubArray(arr)
print('最大子数组为:',res,'其和为:',resSub)
res_1 = solution.maxSubArry_1(arr)
print(res_1)
resProduct = solution.maxProduct(arr)
print('最大子数组乘积:',resProduct)

力扣152,53题,最大子序列求和and积的更多相关文章

  1. leetcode 力扣第七题: 整数反转

    哇,发现会写算法的人好牛逼啊,而且好像大多写算法的都不用PHP,哈哈哈哈哈,在领扣里面都没有php这个选项,真尴尬 从几个月之前就想刷题了,但是不会啊,很懵逼啊,昨天搜了一下答案,好像才打开了我这个写 ...

  2. 力扣(LeetCode)67. 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...

  3. LeetCode | 力扣周赛C题 5370. 设计地铁系统

    请你实现一个类 UndergroundSystem ,它支持以下 3 种方法: checkIn(int id, string stationName, int t) 编号为 id 的乘客在 t 时刻进 ...

  4. 刷题-力扣-剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de ...

  5. 力扣50题 Pow(x,n)

    本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recurs ...

  6. 力扣485. 最大连续1的个数-C语言实现-简单题

    题目 [题目传送门] 给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3 ...

  7. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  8. 【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨

    题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/majority-element/ 注意,该题在LC中被标注为easy,所以我们更多应该关 ...

  9. 力扣算法题—069x的平方根

    实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...

随机推荐

  1. [LOJ2002] [SDOI2017] 序列计数

    题目链接 LOJ:https://loj.ac/problem/2002 洛谷:https://www.luogu.org/problemnew/show/P3702 Solution 考虑补集转换, ...

  2. Codeforces VP/补题小记 (持续填坑)

    Codeforces VP/补题小记 1149 C. Tree Generator 给你一棵树的括号序列,每次交换两个括号,维护每次交换之后的直径. ​ 考虑括号序列维护树的路径信息和,是将左括号看做 ...

  3. golang ---获取磁盘信息

    package main import ( "fmt" "github.com/StackExchange/wmi" ) type Storage struct ...

  4. ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析

    需求: 在公司新的系统里面博主我使用的是ApachShiro 作为安全框架.作为后端的鉴权以及登录.分配权限等操作 管理员的信息都是存储在管理员表 前台App 用户也需要校验用户名和密码进行登录.但是 ...

  5. CAS 5.x搭建常见问题系列(1).未认证的授权服务

    错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...

  6. [C#] 匿名方法的方便和安全

    static void Main(string[] args) { int count = 5; //不安全写法 Task.Run(() => { Thread.Sleep(1000); Con ...

  7. 规格化设计——OO第三单元总结

    规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 ​ JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...

  8. 【转载】Sqlserver在创建表的时候如何定义自增量Id

    在Sqlserver创建表的过程中,有时候需要为表指定一个自增量Id,其实Sqlserver和Mysql等数据库都支持设置自增量Id字段,允许设置自增量Id的标识种子和标识自增量,标识种子代表初始自增 ...

  9. 苹果手机浏览器的$(document).on(“click”,function(){}) 绑定的事件点击无效

    需要给对应的元素加上 cursor: pointer  的css样式才可以生效点击事件:

  10. Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析

    一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...