题目1 最小子数组

描述:

给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。

注意事项

子数组最少包含一个数字

您在真实的面试中是否遇到过这个题?

Yes

样例

给出数组[1, -1, -2, 1],返回 -3

标签

LintCode 版权所有 子数组 贪心 数组
题目2 最大子数组
描述:

给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。

注意事项

子数组最少包含一个数

您在真实的面试中是否遇到过这个题?

Yes

样例

给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6

挑战

要求时间复杂度为O(n)

标签

贪心 枚举法 数组 LintCode 版权所有 子数组 领英
题目分析:
题目1求最小子数组和,题目没有写要求算法复杂度,可以考虑Python的数组切片功能,只能获取子数组,然后求和,获取最小值
通过动态规划,依次获取nums[i:j]的子数组和,算法复杂度O(n*logn)
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.最小子数组和相关推荐

  1. LintCode Python 简单级题目 491.回文数

    原题描述: 判断一个正整数是不是回文数. 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数. 注意事项 给的数一定保证是32位正整数,但是反转之后的数就未必了. 您在真实的面试中是否遇到过这个 ...

  2. LintCode Python 简单级题目 96.链表划分

    原题描述: 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 您在真实的面试中是否遇到过这个题? Yes 样例 给定链表 1- ...

  3. 判断丑数python_LintCode Python 简单级题目 517.丑数

    题目描述: 写一个程序来检测一个整数是不是丑数. 丑数的定义是,只包含质因子 2, 3, 5 的正整数.比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7. 注意事项 可以认为 1  ...

  4. python小明爬楼梯_LintCode Python 简单级题目 111.爬楼梯 (斐波纳契数列 青蛙跳)

    **设f(n)为n阶台阶的情况下,所有不同的跳法方法的总和!** 1.如果起始跳一阶的话,剩余的n-1阶就有 f(n-1) 种跳法: 2.如果起始跳二阶的话,剩余的n-2阶就有 f(n-2) 种跳法: ...

  5. 领扣LintCode问题答案-44. 最小子数组

    领扣LintCode问题答案-44. 最小子数组 目录 44. 最小子数组 鸣谢 44. 最小子数组 给定一个整数数组,找到一个具有最小和的连续子数组.返回其最小和. 子数组最少包含一个数字 样例 1 ...

  6. 【总结一下|PTA】浙大版《Python 程序设计》题目集

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  7. 墙裂建议收藏,100道Python练手题目

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自丨Python知识大全 ‍来源丨大学 github.com/R ...

  8. Python简单主机批量管理工具

    Python简单主机批量管理工具 一.程序介绍 需求: 简单主机批量管理工具需求:1.主机分组2.主机信息使用配置文件3.可批量执行命令.发送文件,结果实时返回4.主机用户名密码.端口可以不同5.执行 ...

  9. 十二、Python简单数据结构应用(之…

    十.Python语言中简单数据结构的应用(之二) ----From a high school student's view to learn Python 关键字: python 列表 堆栈 数据结 ...

最新文章

  1. Lintcode 408 解题思路及c++代码
  2. dockerfile构建镜像的命令_编写Dockerfile的最佳实践
  3. Hadoop的改进实验(中文分词词频统计及英文词频统计)(1/4)
  4. 点击延迟_300ms 延迟是什么,如何解决
  5. hdu 1058 Humble Numbers
  6. 分享21款漂亮的WordPress高级主题
  7. 【操作系统】多道程序的理解
  8. Java Excel(jxl)学习笔记
  9. 如何招到优秀的程序员(第二版)
  10. 【图像处理】MATLAB:亮度变换
  11. swift可选隐式可选类型
  12. 如何计算tomcat线程池大小?
  13. 简析Apache Ignite
  14. 如何破解Charles4.0.1------超级简单
  15. 方配网站服务器,方配网站服务器
  16. Lifecycle使用篇
  17. 如何将自己chrome中的拓展程序分享给别人
  18. hibernate 基本
  19. spring cloud实践
  20. c51汇编语言典型例子详解,51单片机典型开发实例大全.pdf

热门文章

  1. 1.7更换JDK1.6版本后,无法启动eclipse mars解决办法。
  2. 依赖注入和控制反转的理解
  3. vb 字符串长度_学习VB编程第5天 基础知识需要一点点积累
  4. python微信点赞脚本_你写过的最好的 Python 脚本是什么?
  5. python的类和对象_Python面向对象之类和对象实例详解
  6. mac php mysql 环境_Mac下配置PHP+MySql环境
  7. Ubuntu16.04安装Shark-3.0.0
  8. 安装node.jsvue3.0脚手架
  9. dateformat java 并发_SimpleDateFormat并发隐患及其解决
  10. 深度学习中拟合是什么意思?