解决leetcode第3985题回文数组求和

3985.回文子数组求和

难度:困难

问题描述:

给你一个整数数组nums。

你的任务是找出nums中一个回文子数组的最大元素和。返回这样的子数组的最大元素和。

子数组是数组中一个连续的非空元素序列。

如果一个子数组正着读和反着读都相同,则称其为回文。

示例1:

输入:nums=10,10

输出:20

解释:

整个数组10,10是回文子数组。因此,最大元素和为10+10=20。

示例2:

输入:nums=1,2,3,2,1,5,6

输出:9

解释:

连续子数组1,2,3,2,1是回文子数组。它的元素和为1+2+3+2+1=9,并且这是最大元素和。

示例3:

输入:nums=7,1,2,1,7,3,4,3,4

输出:18

解释:

连续子数组7,1,2,1,7是回文子数组。它的元素和为7+1+2+1+7=18,并且这是最大元素和。

示例4:

输入:nums=1,2,3,4,5

输出:5

解释:

不存在长度大于1的回文子数组。数组中的最大元素是5,因此答案为5。

示例5:

输入:nums=1000

输出:1000

解释:

只包含一个元素的子数组也是回文子数组。因此,答案为1000。

提示:

1<=nums.length<=10**5

1<=numsi<=10**9

问题分析:

本题思路简单,首先是如何判断回文子数组,这通过函数check_if_it_is_a_palindrome_array(nums)实现,其功能是对于给定的数组nums,判断其是否为回文数组,如果是,返回True,否则返回False,其次通过一个二重循环列举出所有可能的子数组,判断其回文性,把所有的回文子数组及其和以列表的形式找出,最后输出最大和以及对应的子数组即可。

程序如下:

python 复制代码
#检查一个数组nums是否为一个回文数组,是返回True,否返回False
def check_if_it_is_a_palindrome_array(nums):
    return nums==nums[::-1]

#主程序
nums=eval(input("enter the array nums="))
t=[]
n=len(nums)
for i in range(n):
    for j in range(i+1,n+1):
        s=nums[i:j]
        if check_if_it_is_a_palindrome_array(s):
            t.append([s,sum(s)])
t.sort(key=lambda x: x[1])
print(f'连续子数组{t[-1][0]}是回文子数组,它的元素和为{t[-1][1]}')

运行实例一

enter the array nums=1,3,2,4,2,3,5

连续子数组3, 2, 4, 2, 3是回文子数组,它的元素和为14

运行实例二

enter the array nums=22,33,44,55

连续子数组55是回文子数组,它的元素和为55

运行实例三

enter the array nums=33,33

连续子数组33, 33是回文子数组,它的元素和为66

运行实例四

enter the array nums=55

连续子数组55是回文子数组,它的元素和为55

相关推荐
程序员阿鹏5 分钟前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
AI 思录27 分钟前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽32 分钟前
跨范式映射的稳定接口设计
人工智能·python·算法
杜大哥36 分钟前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk55537 分钟前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
信誓旦旦的程序猿44 分钟前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
萧鼎1 小时前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi
2601_962299881 小时前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
郝学胜-神的一滴2 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio