最大连续子序列和问题python_面试题42:连续子数组的最大和 python
题目描述
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)
思路:采用动态规划的思路。
首先仔细观察数组的规律,可以得到下列动态规划的式子:
(1)如果i==0 或者 F[i-1]<=0 那么 F[i] = A[i]
(2)如果i!=0 并且 F[i-1]>0 那么 F[i] = F[i-1] + A[i]
# -*- coding:utf-8 -*-
class Solution:
def FindGreatestSumOfSubArray(self, array):
# write code here
# #动态规划的思想
# #res存储历史之和的最大值
res = array[0]
sum = res
for i in range(1,len(array)):
if sum>0:
sum = sum + array[i]
else:
sum = array[i]
#这一步很关键,不要忘记
if sum>res:
res = sum
return res
s = Solution()
print s.FindGreatestSumOfSubArray([1,-2,3,10,-4,7,2,-5])
最大连续子序列和问题python_面试题42:连续子数组的最大和 python相关推荐
- 【IT笔试面试题整理】连续子数组的最大和
[试题描述]输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n). 思路:当我们加上一个正数时,和会增加:当我们加上一个 ...
- [剑指offer]面试题31:连续子数组的最大和
面试题31:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). ❖ 解法一:举例分析数组的 ...
- 剑指offer——面试题31:连续子数组的最大和
剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...
- php 求最大连续子序列,[HDOJ 1003]动态规划法求和最大的连续子序列
Case 1: 14 1 4 Case 2: 7 1 6 题目的大致意思就是要你从给定的数组中找出一段连续的子序列,使得这段连续的子序列中所有数字的总和不小于数组中其他任何一段连续子序列中数字的总和. ...
- 面试题31.连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或者连续多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n) 本题可以把所有子数组全部找出来再求其和的最大值便可以得出,但 ...
- 连续子数组的最大和python_连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...
- 剑指Offer面试题:28.连续子数组的最大和
一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...
- 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...
- 牛客题霸 [连续子数组的最大和] C++题解/答案
牛客题霸 [连续子数组的最大和] C++题解/答案 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和 ...
- 【最佳解法】剑指 Offer 42. 连续子数组的最大和
我是小张同学,立志用最简洁的代码做最高效的表达 思路:动态规划 假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1. 我们用 f(i)f(i) ...
最新文章
- 解读eXtremeComponents代码结构--转载
- Cisco学习笔记 CCNP-EIGRP
- MySQL 如何实现 Oracle 的 row_number() over() 分组排序功能
- pb retrieve时停止工作_大佬们挂在嘴边的PE、PB是什么?
- 热备份路由协议(HSRP)
- Trip to Canvas(1)
- 思科网络综合实验(服务器,三层交换机,路由器)
- idea文件名颜色的区别
- 数学建模MathType输入平方的三种模式
- 电脑其实很好玩,玩好了其实很无耻
- OUC2021秋-软件工程-期末(回忆版)
- 01马氏链及其平稳分布
- cmd下使用命令切换目录
- 极客日报:同一个手机号或可注册两个微信号;第三代AirPods不再支持iPhone 6等老手机
- java怎么获取索引值,Java 实例 - 获取向量元素的索引值
- 如何显示文件后缀名(来源 百度)
- 7-8 等腰直角三角形 -- PTA
- 手把手教你使用 EndNote X9
- 计算机到底是谁发明的?
- 微信公众号模板消息和图文消息的区别