1 题目描述

2 解题思路

2.1 前缀和

建立一个前缀和数据,来记录 sum(A[0~n])。那么sum(A[i,j])=sum(A[0~j])-sum(A[0~i-1])

class Solution:def maxSubArray(self, nums: List[int]) -> int:tmp=[0]for i in nums:tmp.append(tmp[-1]+i)ma=-1000000l=len(tmp)for i in range(l):for j in range(i+1,l):if(tmp[j]-tmp[i]>ma):ma=tmp[j]-tmp[i]return(ma)

这样是最耗时的

2.2 动态规划

我们设立一个present_val 表示包括当前要遍历的数值的情况下,当前最大的区间和

其中,present_val满足:present_val=max(present_val+i,i)

present_ret表示目前最大的区间和,满足:present_ret=max(present_ret,present_val)

class Solution:def maxSubArray(self, nums: List[int]) -> int:present_val=-100000present_ret=-100000for i in nums:present_val=max(present_val+i,i)present_ret=max(present_ret,present_val)return(present_ret)

2.3 分治

最后一个做法是leetcode官方给出的一种题解

import math
class Solution:def maxSubArray(self, nums: List[int]) -> int:def get(l,r):if(l==r):#如果只有一个元素的时候,回溯return nums[l],nums[l],nums[l],nums[l]else:m=(l+r)//2#寻找中点lSum_l,rSum_l,mSum_l,iSum_l=get(l,m)lSum_r,rSum_r,mSum_r,iSum_r=get(m+1,r)#得到左子区间和右子区间的lSum,rSum,mSum和iSumlSum=max(lSum_l,iSum_l+lSum_r)rSum=max(rSum_r,iSum_r+rSum_l)mSum=max(mSum_l,mSum_r,lSum_r+rSum_l)iSum=iSum_r+iSum_lreturn lSum,rSum,mSum,iSumreturn get(0,len(nums)-1)[2]

文巾解题 53. 最大子序和相关推荐

  1. 文巾解题 15. 三数之和

    1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...

  2. leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法

    题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...

  3. leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别

    这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...

  4. leetcode - 53. 最大子序和

    53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...

  5. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  6. 文巾解题 面试题 01.04. 回文排列

    1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...

  7. 文巾解题 342. 4的幂

    1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...

  8. 文巾解题 477. 汉明距离总和

    1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...

  9. 文巾解题 1035. 不相交的线

    1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...

最新文章

  1. js init : function ()
  2. Spring Boot 2.0 常见问题总结(一)
  3. PLUICameraViewController 拍照页面崩溃
  4. python官网下载步骤除了windows-python安装教程详解|python下载安装教程步骤
  5. 认知:什么是真正的产品思维?
  6. REVERSE-PRACTICE-BUUCTF-8
  7. eclipse java source_Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法
  8. HiveQL:模式设计
  9. matlab图像的空域滤波增强处理,matlab 数字图像的空域滤波代码
  10. PHP手机获取6为不反复验证码
  11. Android UI设计秘笈
  12. oracle国家字符集
  13. php检索条件丢失,php – 从SQL Server检索时丢失的某些图像的一部分
  14. java基础知识——JAVA中的函数(方法)
  15. [ffmpeg][goav][issues] goav Dictionary crash double free
  16. SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)
  17. 高通快速调试命令集合---持续更新
  18. 小程序 自定义picker组件 picker-view
  19. 树莓派3B+TensorFlow Python3.7
  20. 心跳PING PONG用法

热门文章

  1. 《CCNA无线640-722认证考试指南》——9.3节集中式架构
  2. Android实例-手机震动(XE8+小米2)
  3. 好用的侧边栏菜单/面板jQuery插件
  4. Raid mdadm lvm
  5. win10系统上抓包网卡的驱动总是失效怎么办?
  6. Windows下的bat文件的@echo off 作用
  7. 汤家凤高等数学基础手写笔记-无穷级数
  8. 【级数】【马尔科夫链】n乘以x的n次方的和函数
  9. date oracle 显示毫秒_oracle数据库to_date日期格式化到毫秒 | 学步园
  10. 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结