LintCode Python 简单级题目 41.最大子数组 - 44.最小子数组和
题目1 最小子数组
描述:
给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。
注意事项
子数组最少包含一个数字
给出数组[1, -1, -2, 1],返回 -3
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
注意事项
子数组最少包含一个数
给出数组[−2,2,−3,4,−1,2,1,−5,3]
,符合要求的子数组为[4,−1,2,1]
,其最大和为6
要求时间复杂度为O(n)
def minSubArray(nums):max = min = sum(nums)maxList = minList = numsn = len(nums)+1for i in range(n+1):for j in range(i+1,n+1):sonList = nums[i:j]Sum = sum(sonList)if Sum >= max:max = SummaxList = sonListelif Sum < min:min = SumminList = sonListprint maxList,sum(maxList)print minList, sum(minList)
题目二要求算法复杂度O(n),上诉动态规划算法不符合要求,使用贪心算法:
class Solution:"""@param nums: A list of integers@return: An integer denote the sum of maximum subarray"""def maxSubArray(self, nums):# write your code heren = len(nums)maxSum = sum(nums)curSum = 0for i in range(n):# 从i开始求和,如果当前和大于maxSum,则赋值给maxSumcurSum += nums[i]if curSum > maxSum:maxSum = curSum# 前面的和如果已经小于0了,那么加上下一个元素值,肯定是小于下一个元素值# 所以如果前面加起来的值小于0了,则舍弃前面的和,从下一位开始继续求和if curSum < 0:curSum = 0return maxSum
同理,最小子数组也可以使用贪心算法,缺点是无法获取到最小子串,只能获取其和。
class Solution:"""@param nums: a list of integers@return: A integer denote the sum of minimum subarray"""def minSubArray(self, nums):# write your code heren = len(nums)minSum = sum(nums)curSum = 0for i in range(n):# 从i开始求和,如果当前和小于于minSum,则赋值给minSumcurSum += nums[i]if curSum < minSum:minSum = curSum# 前面的和如果已经大于0了,那么加上下一个元素值,肯定是大于下一个元素值# 所以如果前面加起来的值大于0了,则舍弃前面的和,从下一位开始继续求和if curSum > 0:curSum = 0return minSum
转载于:https://www.cnblogs.com/bozhou/p/6933810.html
LintCode Python 简单级题目 41.最大子数组 - 44.最小子数组和相关推荐
- LintCode Python 简单级题目 491.回文数
原题描述: 判断一个正整数是不是回文数. 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数. 注意事项 给的数一定保证是32位正整数,但是反转之后的数就未必了. 您在真实的面试中是否遇到过这个 ...
- LintCode Python 简单级题目 96.链表划分
原题描述: 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 您在真实的面试中是否遇到过这个题? Yes 样例 给定链表 1- ...
- 判断丑数python_LintCode Python 简单级题目 517.丑数
题目描述: 写一个程序来检测一个整数是不是丑数. 丑数的定义是,只包含质因子 2, 3, 5 的正整数.比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7. 注意事项 可以认为 1 ...
- python小明爬楼梯_LintCode Python 简单级题目 111.爬楼梯 (斐波纳契数列 青蛙跳)
**设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!** 1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法: 2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法: ...
- 领扣LintCode问题答案-44. 最小子数组
领扣LintCode问题答案-44. 最小子数组 目录 44. 最小子数组 鸣谢 44. 最小子数组 给定一个整数数组,找到一个具有最小和的连续子数组.返回其最小和. 子数组最少包含一个数字 样例 1 ...
- 【总结一下|PTA】浙大版《Python 程序设计》题目集
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...
- 墙裂建议收藏,100道Python练手题目
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自丨Python知识大全 来源丨大学 github.com/R ...
- Python简单主机批量管理工具
Python简单主机批量管理工具 一.程序介绍 需求: 简单主机批量管理工具需求:1.主机分组2.主机信息使用配置文件3.可批量执行命令.发送文件,结果实时返回4.主机用户名密码.端口可以不同5.执行 ...
- 十二、Python简单数据结构应用(之…
十.Python语言中简单数据结构的应用(之二) ----From a high school student's view to learn Python 关键字: python 列表 堆栈 数据结 ...
最新文章
- Lintcode 408 解题思路及c++代码
- dockerfile构建镜像的命令_编写Dockerfile的最佳实践
- Hadoop的改进实验(中文分词词频统计及英文词频统计)(1/4)
- 点击延迟_300ms 延迟是什么,如何解决
- hdu 1058 Humble Numbers
- 分享21款漂亮的WordPress高级主题
- 【操作系统】多道程序的理解
- Java Excel(jxl)学习笔记
- 如何招到优秀的程序员(第二版)
- 【图像处理】MATLAB:亮度变换
- swift可选隐式可选类型
- 如何计算tomcat线程池大小?
- 简析Apache Ignite
- 如何破解Charles4.0.1------超级简单
- 方配网站服务器,方配网站服务器
- Lifecycle使用篇
- 如何将自己chrome中的拓展程序分享给别人
- hibernate 基本
- spring cloud实践
- c51汇编语言典型例子详解,51单片机典型开发实例大全.pdf
热门文章
- 1.7更换JDK1.6版本后,无法启动eclipse mars解决办法。
- 依赖注入和控制反转的理解
- vb 字符串长度_学习VB编程第5天 基础知识需要一点点积累
- python微信点赞脚本_你写过的最好的 Python 脚本是什么?
- python的类和对象_Python面向对象之类和对象实例详解
- mac php mysql 环境_Mac下配置PHP+MySql环境
- Ubuntu16.04安装Shark-3.0.0
- 安装node.jsvue3.0脚手架
- dateformat java 并发_SimpleDateFormat并发隐患及其解决
- 深度学习中拟合是什么意思?