文巾解题 53. 最大子序和
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. 最大子序和相关推荐
- 文巾解题 15. 三数之和
1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...
- leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- leetcode - 53. 最大子序和
53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- 文巾解题 面试题 01.04. 回文排列
1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...
- 文巾解题 342. 4的幂
1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...
- 文巾解题 477. 汉明距离总和
1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...
- 文巾解题 1035. 不相交的线
1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...
最新文章
- js init : function ()
- Spring Boot 2.0 常见问题总结(一)
- PLUICameraViewController 拍照页面崩溃
- python官网下载步骤除了windows-python安装教程详解|python下载安装教程步骤
- 认知:什么是真正的产品思维?
- REVERSE-PRACTICE-BUUCTF-8
- eclipse java source_Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法
- HiveQL:模式设计
- matlab图像的空域滤波增强处理,matlab 数字图像的空域滤波代码
- PHP手机获取6为不反复验证码
- Android UI设计秘笈
- oracle国家字符集
- php检索条件丢失,php – 从SQL Server检索时丢失的某些图像的一部分
- java基础知识——JAVA中的函数(方法)
- [ffmpeg][goav][issues] goav Dictionary crash double free
- SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)
- 高通快速调试命令集合---持续更新
- 小程序 自定义picker组件 picker-view
- 树莓派3B+TensorFlow Python3.7
- 心跳PING PONG用法
热门文章
- 《CCNA无线640-722认证考试指南》——9.3节集中式架构
- Android实例-手机震动(XE8+小米2)
- 好用的侧边栏菜单/面板jQuery插件
- Raid mdadm lvm
- win10系统上抓包网卡的驱动总是失效怎么办?
- Windows下的bat文件的@echo off 作用
- 汤家凤高等数学基础手写笔记-无穷级数
- 【级数】【马尔科夫链】n乘以x的n次方的和函数
- date oracle 显示毫秒_oracle数据库to_date日期格式化到毫秒 | 学步园
- 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结