【hot100篇-python刷题记录】【最大子数组和】

news2024/12/26 11:51:46

R5-普通数组

印象题,讲思路:

1.0个元素,返回0

2.将从left到right的计算简化为为left-mid,mid+1-right 以及left-mid-right 3者的最大值(因为有负数)

3.上面左右两边的计算可以递归调用本身函数,left-mid-right的计算另起函数

4.cross函数中,计算跨过mid元素的数组的最大值,就可以从mid元素像左右两边扩展,由于可能出现一边倒的情况(左边/右边为0),则左右两边分别计算最大值,最后s1+mid+s2即可。

tips:

当数组只有一个元素,这一条件需要放在递归计算那个函数,因为这是递归边界。 

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        n=len(nums)
        if n==0:
            return 0
        return self.max_sub(nums,0,n-1)
    #计算连续数组的最大和
    def max_sub(self,nums,left,right):
        if left==right:
            return nums[left]
        mid=(left+right)//2
        return max(self.max_sub(nums,left,mid),
                   self.max_sub(nums,mid+1,right),
                   self.max_cross(nums,left,mid,right))
    #计算跨越mid元素的最大和
    def max_cross(self,nums,left,mid,right):
        s1=0
        max_left=0
        start_left=mid-1
        while start_left>=left:
            s1+=nums[start_left]
            max_left=max(s1,max_left)
            start_left-=1
        
        s2=0
        max_right=0
        start_right=mid+1
        while start_right<=right:
            s2+=nums[start_right]
            max_right=max(s2,max_right)
            start_right+=1
        
        #最终结果
        return max_left+nums[mid]+max_right
        
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二十二节、创建人物状态栏

一、可视化插件 在层级面板名字加上对应的图标&#xff0c;会显示颜色&#xff0c;需要运行一下 二、UI 1、创建一个画布 由于使用新的新输入系统&#xff0c;需要替换一下 2、设置锚点 作用是&#xff1a;当屏幕分辨率更改后&#xff0c;ui图标不会位移 3、设置填充 4、制…

tomcat 运行javaweb项 提示无法将资源添加到Web应用程序缓存解决方法

javaweb项目tomcat启动提示web资源缓存不足&#xff0c;具体如下&#xff0c;不影响项目运行 15-Aug-2024 13:35:20.200 警告 [localhost-startStop-1] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/classes/web-vue2/ssdev/ux/login/style/font/f…

2000-2022年 上市公司代理成本(原始数据、上市公司代理成本的最终结果、do文件,参考文献等等)

上市公司代理成本&#xff08;2000-2022年&#xff09; 上市公司的代理成本是公司治理中一个重要的概念&#xff0c;它涉及到公司内部不同利益相关者之间的利益冲突和协调问题。主要包含以下几个方面&#xff1a; 监督成本&#xff1a;股东为了确保经理人的行为符合公司和股东的…

VR游戏移植到Apple Vision Pro的技术挑战与解决方案

核心观点: 30Hz手部追踪在90Hz游戏中的适配 是最大挑战,需要创新性解决方案。Vision Pro的独特架构 要求重新思考着色器编译和缓存策略。全沉浸模式下的空间音频实现 需要自定义解决方案。早期适配 可能面临技术限制,但也带来市场先机。学习指南: 深入研究Vision Pro的手部…

分代回收机制

分代回收机制 JVM分代回收策略 JVM分代回收策略就是Java 虚拟机根据对象存活的周期不同&#xff0c;把堆内存划分为几块&#xff0c;一般分为新生代、老年代&#xff0c;永久代&#xff0c;不过永久代在JDK1.8永久移除了&#xff0c;被元空间取代了 新生代 新生代主要是用来…

【docker】docker compose进阶

docker compose docker compose简介docker compose yaml格式1、docker-compose部署tomcat2、docker-compose部署mysql3、docekr-compose部署lnmp项目需求准备依赖文件、配置nginx配置mysql配置php编写docker-compose.yml配置mysql 4、容器部署registry&#xff0c;进行容器上传…

Springboot+公寓信息服务小程序—计算机毕业设计源码无偿分享需要私信20481

摘要 本论文主要论述了如何使用springboot开发一个公寓信息服务小程序&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述公寓信息服务小程序的当前背景以及系统开发的目的&#xff0c;后续…

STL介绍以及string类

什么是STL 是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 STL的六大组件 为什么要学习string类 C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&am…

3-4 RGB LED(智能应用篇)

3-4 RGB LED&#xff08;智能应用篇&#xff09; 3-4 RGB LEDRGB-LED及电路示例程序效果演示 3-4 RGB LED Led的灯珠和灯带&#xff0c;相当于点和线&#xff08;可以画出丰富否画面&#xff09; 主要介绍led灯珠 RGB-LED及电路 RGB-LED可以发出红、绿、蓝色的光芒&#xff0…

Flutter 09 Future 和 Stream

一、Future 和 Stream 是处理异步操作的两个重要概念&#xff1a; Future&#xff1a; Future 用于表示一个延迟操作的值或错误&#xff0c;即异步操作的结果。通过 Future&#xff0c;可以在异步操作完成后获取其结果。可以使用 async 和 await 关键字来处理 Future&#xf…

Cisco Catalyst 8000v Edge Software, IOS XE Release IOSXE-17.14.01a ED

Cisco Catalyst 8000v Edge Software, IOS XE Release IOSXE-17.14.01a ED Cisco Catalyst 8000V 边缘软件 - 虚拟路由器 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-8000v/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

Redis笔记-分布式存储方案中哨兵模式配置

以前在系统分析师中学习到了Redis哨兵模式&#xff0c;只知道其中基本概念&#xff0c;但不知道怎么去配这个&#xff0c;今天看到某项目&#xff0c;特意记录下其配置过程。哨兵模式比主从模式&#xff0c;更具有容错性。 Redis分布式存储方案 分布式存储方案 核心特点 主从…

centos 7.9 迁移到 openEuler22.03-LTS-SP3

openEuler移植案例 | 移植操作指南 | openEuler社区官网 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 需要两台机器&#xff0c; 不通过原因 在待升级节点检查是否有安装x2openEuler-core时, 发现已经安装了,不能作为升级节点。该节点为&#xff1a; 解…

开发日记:Object-c 中的 NSString 和 NSMutableString的常用方法

今天讲不可变数组 NSArray 可变数组 NSMutableArray。话不多说&#xff0c;直接上干货。 oc中的数组 可变数组 NSMutableArray使用初始化方法创建可变数组使用便利构造器创建可变数组可变数组追加元素可变数组追加一个不可变数组可变数组删除一个元素可变数组删除指定下标的元素…

IPD推行成功的核心要素(十七)矩阵型组织架构设计实现多组织协同以便快速抓取市场机会

随着企业规模不断增长&#xff0c;业务越来越复杂&#xff0c;组织架构对企业高效运作的影响也越来越大。加之企业所处的市场环境瞬息万变&#xff0c;机会稍纵即逝。传统金字塔型的组织架构&#xff0c;完全无法满足这样快速灵活的要求。而IPD体系设计了产品线&#xff08;IPM…

decoy靶机复现

靶机设置 设置网卡ens33 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机ip为192.168.112.149 端口扫描 nmap 192.168.112.149 -p- -sV -O -Pn 访问浏览器 默认是8080&#xff0c;需要更改为80端口 下载好之后发现解压需要密码 破解密码 将该安装包放到kali中…

配置Prettier+Vscode setting提高前端开发效率

前言 大家好&#xff0c;上一篇一文读懂 系列的文章中我们介绍了前端的代码格式化校验工具ESLient。代码格式是进行自动校验了&#xff0c;但你还要一个个的微调&#xff0c;很麻烦不是吗&#xff1f; 本文介绍和ESLient配合使用的Prettier实现编译器自动将代码格式化。 同时也…

Nat Methods编委:积极探索AI与生物学交叉的高质量基于人工智能方法的论文发表|顶刊速递·24-08-19

小罗碎碎念 今天分享的这篇文献&#xff08;特刊&#xff09;发表于《Nat Methods》&#xff0c;目前IF36.1。 分享这篇文献是临时做的决定&#xff0c;因为在朋友圈看到有关这篇特刊的介绍&#xff0c;对标题很感兴趣&#xff0c;所以我立刻找到对应的文章来详细分析一下。 在…

Leetcode JAVA刷刷站(35)搜索插入位置

一、题目概述 二、思路方向 为了实现这一功能&#xff0c;我们可以使用二分查找的变种来找到目标值或确定其应插入的位置。在二分查找过程中&#xff0c;我们不仅检查中间元素是否等于目标值&#xff0c;还根据比较结果更新搜索的上下界。如果目标值大于中间元素&#xff0c;则…

一文带你从源码中学习那些实用的位运算技巧

写在文章开头 众所周知位运算执行效率高于常规运算,通过不同的位运算搭配可以让我们写出简洁高效的代码表达式,所以本文从各大开源项目的源码中介绍一下各类运算技巧及其使用场景。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是…