首页 > 编程语言 >[Python手撕]环形子数组的最大和

[Python手撕]环形子数组的最大和

时间:2024-10-16 10:33:55浏览次数:5  
标签:arr temp nums Python max min 环形 数组

给定一个长度为 n 的环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和 。

环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n] , nums[i] 的前一个元素是 nums[(i - 1 + n) % n] 。

子数组 最多只能包含固定缓冲区 nums 中的每个元素一次。形式上,对于子数组 nums[i], nums[i + 1], ..., nums[j] ,不存在 i <= k1, k2 <= j 其中 k1 % n == k2 % n 。

示例 1:

输入:nums = [1,-2,3,-2]
输出:3
解释:从子数组 [3] 得到最大和 3
示例 2:

输入:nums = [5,-3,5]
输出:10
解释:从子数组 [5,5] 得到最大和 5 + 5 = 10
示例 3:

输入:nums = [3,-2,2,-3]
输出:3
解释:从子数组 [3] 和 [3,-2,2] 都可以得到最大和 3

class Solution:
    def maxSubarraySumCircular(self, nums: List[int]) -> int:

        n = len(nums)

        # 先找最大子数组和
        temp = nums[:]
        for i in range(1, n):
            if temp[i - 1] > 0:
                temp[i] += temp[i - 1]
        max_arr = max(temp)

        # 再找最小子数组和
        temp = nums[:]
        for i in range(1, n):
            if temp[i - 1] < 0:
                temp[i] += temp[i - 1]
        min_arr = min(temp)

        if min_arr == sum(nums):
            return max_arr
        return max(max_arr, sum(nums) - min_arr)

标签:arr,temp,nums,Python,max,min,环形,数组
From: https://www.cnblogs.com/DCFV/p/18469296

相关文章

  • Python 数据库备份脚本
    importdatetimeimportosimportsubprocess#数据库备份目录BACKUP_DIR='/path/to/backup'#备份文件保留周期(天)RETENTION_PERIOD=7#备份数据库defbackup_database():current_time=datetime.datetime.now()backup_file=f"backup_{current_time.strf......
  • python从0快速上手(十一)高级特性1
    Python学习:高级特性1在Python的奇妙世界里,高级特性就像是那些隐藏在角落里的神秘力量,等待着勇敢的程序员去发掘。装饰器、生成器和迭代器,这些听起来就像是古老魔法书中的咒语,但它们其实是Python中强大的编程工具。让我们一起揭开这些高级特性的神秘面纱,看看它们如何让我们......
  • 【新人系列】Python 入门(二):Python IDE 介绍
    ✍个人博客:https://blog.csdn.net/Newin2020?type=blog......
  • python pandas写入excel
    #--coding:utf-8--importdatetimeimportpandasaspdfromcommon_toolimportget_ip_areafromdb.mysqlConnectionimportMyPymysqlPoolfromdb_configimportdata_report_dbsex_dict={"-1":"未知","0":"女&......
  • python 实现旋转图片算法
    旋转图片算法介绍旋转图片算法是图像处理中常用的一种技术,它可以将图像中的对象旋转到特定的角度。这种算法在图像处理、计算机视觉、人工智能等领域都有广泛的应用,例如自动驾驶、医学影像、安防监控等场景。以下是旋转图片算法的基本步骤:确定旋转中心点:旋转操作通常围绕......
  • python爬虫之cookie管理
    Cookie处理在Web开发中,Cookie是一种常用的技术,用于在Web服务器和浏览器之间存储和传输数据。Cookie通常包含有关用户会话、首选项和其他信息的键值对。     Request库的get()方法的语法是:requests.get(url,params=None,**kwargs))url:想要获取的网页的链接。params:url的额......
  • python datetime.datetime.now() 北京时间
    pythondatetime.datetime.now()北京时间 ===================要获取北京时间(中国标准时间,UTC+8),可以使用datetime模块中的datetime和timedelta类。以下是一个简单的函数,用于获取北京时间:fromdatetimeimportdatetime,timedelta defget_beijing_time():   #获取UTC......
  • 大数据时代下,Python爬虫已然成为了副业赚钱的首选目标!
    前言今年又是难找工作的一年。中小企业倒闭、裁员、失业...因为大环境不好,人心也变得越来越焦虑,深怕下一个不幸者会是自己。在这样的现实面前,「副业搞钱」逐渐成了人们的刚需,有一份失业了依旧有收入、不出门也依然有收入的副业,是未来几年最大的底气。暴风雨随时会来,只......
  • python画图|在三维空间的不同平面上分别绘制不同类型二维图
    【1】引言前序已经完成了基础的二维图和三维图绘制教程探索,可直达的链接包括但不限于:python画图|3D参数化图形输出-CSDN博客python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客在学习过程中,发现一个案例:在三维空间的不同平面上分别绘制不同类型二维图。经......
  • 第九章习题3-编写一个函数print,打印一个学生的成绩数组,该数组有5个学生的数据记录,每个
     ......