解决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

相关推荐
lzhdim5 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ8 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛8 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
w_zero_one10 小时前
算法--模拟
java·数据结构·算法
外收内放10 小时前
面向对象高级(实战案例)
开发语言·python·学习
秋天的怀念_David10 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
专业程序开发源11 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟11 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境11 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
秋天的怀念_David11 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法