news 2026/4/16 15:46:13

解决leetcode第3826题.最小分割分数问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决leetcode第3826题.最小分割分数问题

3826.最小分割分数

难度:困难

问题描述:

给你一个整数数组nums和一个整数k。

你的任务是将nums分割成恰好k个子数组,并返回所有有效分割方案中最小可能的分数。

一个分割方案的分数是其所有子数组值的总和。

子数组的值定义为sumArr*(sumArr+1)/2,其中sumArr是该子数组元素的总和。

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

示例1:

输入:nums=[5,1,2,1],k=2

输出:25

解释:

我们必须将数组分割成k=2个子数组。一种最优方案是[5]和[1,2,1]。

第一个子数组的sumArr=5,value=5×6/2=15。

第二个子数组的sumArr=1+2+1=4,value=4×5/2=10。

该分割方案的分数为15+10=25,这是可能的最小分数。

示例2:

输入:nums=[1,2,3,4],k=1

输出:55

解释:

由于必须分割成k=1个子数组,所有元素都属于同一个子数组:[1,2,3,4]。

该子数组的sumArr=1+2+3+4=10,value=10×11/2=55。

该分割方案的分数为55,这是可能的最小分数。

示例3:

输入:nums=[1,1,1],k=3

输出:3

解释:

我们必须将数组分割成k=3个子数组。唯一的有效分割方案是[1],[1],[1]。

每个子数组的sumArr=1,value=1×2/2=1。

该分割方案的分数为1+1+1=3,这是可能的最小分数。

提示:

1<=nums.length<=1000

1<=nums[i]<=104

1<=k<=nums.length

问题分析:

将nums数组分割成恰好k个子数组,则这k个子数组的长度和必然等nums的长度,把数组nums的长度设为n,这个问题就可以抽象为如何把n分成k个数之和,把各种分法找出之后,再将每一种分法解析为相应的子数组,并求出对应的分数,最后在其中找到最小分数即可。

程序如下:

#把n分成k个数之和,返回各种分法 def get_division_method(n,k): if k==1: return [[n]] elif k==2: t=[] for i in range(1,n): t.append([i,n-i]) return t else: t=[] for i in range(1,n): m=get_division_method(n-i,k-1) for j in m: j.append(i) t.append(j) return t #根据一个分解方案解析生成对应的子数组并返回 def analysis_plan(nums,a): t=[] k=0 for i in a: b=nums[k:k+i] t.append(b) k=k+i return t #计算一个子数组的分数,并返回 def get_score(sub_array): s=sum(sub_array) return s*(s+1)/2 #主程序 nums=eval(input('pls input nums=')) k=int(input('pls input k=')) n=len(nums) a=get_division_method(n,k) score=[] for i in a: t=analysis_plan(nums,i) s=0 for j in t: s+=get_score(j) score.append([t,s]) score.sort(key=lambda x:x[1]) print(f'最优方案是{score[0][0]},该分割方案的分数为{int(score[0][1])}')

运行实例一

pls input nums=[1,2,3]

pls input k=1

最优方案是[[1, 2, 3]],该分割方案的分数为21

运行实例二

pls input nums=[1,2,3,4,5]

pls input k=2

最优方案是[[1, 2, 3], [4, 5]],该分割方案的分数为66

运行实例三

pls input nums=[5,4,2,1]

pls input k=3

最优方案是[[5], [4], [2, 1]],该分割方案的分数为31

运行实例四

pls input nums=[1,3,5,7,9]

pls input k=4

最优方案是[[1, 3], [5], [7], [9]],该分割方案的分数为98

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:07:07

文献综述AIGC检测率特别高怎么改?降低AI疑似度的专项技巧

为什么文献综述的AI检测率总是特别高&#xff1f; 在AI检测报告中&#xff0c;文献综述往往是AI率最高的部分&#xff0c;经常达到80%甚至90%以上。这不是偶然的&#xff0c;背后有几个原因&#xff1a; 第一个原因是格式太规律。文献综述容易写成「某某(年份)认为…某某(年份…

作者头像 李华
网站建设 2026/4/16 9:08:28

建议收藏|千笔写作工具,本科生论文写作神器

你是否曾为论文选题发愁&#xff0c;绞尽脑汁却毫无头绪&#xff1f;是否在深夜面对空白文档&#xff0c;文思枯竭、无从下笔&#xff1f;又或是反复修改仍不满意&#xff0c;查重率居高不下&#xff0c;格式总出错&#xff1f;这些论文写作中的“经典难题”&#xff0c;是否也…

作者头像 李华
网站建设 2026/4/16 11:12:05

双库并行!中国森林地上和地下生物量碳变化长时序数据集构建与验证

为了量化中国近期全国性恢复工作的生态后果&#xff0c;过去20年森林生物量碳储量变化的空间显性信息是至关重要的。 生物量碳是指活有机体中的碳量&#xff0c;‌通常植物的生物量碳占生物量的45%到50%。‌生物量碳是生物量的一部分&#xff0c;‌主要指的是活有机体中的碳元素…

作者头像 李华
网站建设 2026/4/16 15:32:36

知网AIGC检测原理是什么?如何针对性降低AI疑似度

知网AIGC检测系统是怎么工作的&#xff1f; 很多同学对知网的AIGC检测系统感到神秘&#xff0c;不知道它到底是怎么判断文本是不是AI生成的。其实理解了检测原理&#xff0c;降低AI疑似度就有了明确的方向。 知网AIGC检测系统主要分析文本的统计学特征&#xff0c;而不是去识别…

作者头像 李华
网站建设 2026/4/16 14:27:16

当你成为 FPGA 工程师,是什么感受?

按照业内老工程师的玩笑话来说&#xff1a;你每天面对的&#xff0c;不是代码&#xff0c;而是一整套价值几百万甚至上千万的开发平台、仿真系统和验证环境。一块板卡的价格&#xff0c;顶得上一线城市一套小户型首付。 1、什么是 FPGA 开发&#xff1f; 一款电子产品从需求立…

作者头像 李华