news 2026/4/18 7:25:50

解决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/18 8:51:30

骨骼网格体

目录 预览动画&#xff1a; 更换材质&#xff1a; 预览动画&#xff1a; 双击编辑&#xff0c;左上角有个预览动画&#xff1a; 更换材质&#xff1a; 资产详情里面&#xff0c;搜索 材质槽&#xff08;Material Slot) 然后选择

作者头像 李华
网站建设 2026/4/18 8:41:50

终于有人把分布式系统架构讲清楚了

分布式系统这个东西&#xff0c;到底该怎么去理解&#xff1f; 我刚开始接触这个概念的时候&#xff0c;翻遍网上的资料&#xff0c;要么知识点零散&#xff0c;要么讲得太绕&#xff0c;真到做项目的时候还是一堆问题。 今天我就仔细地讲一讲它&#xff0c;跟你聊聊我的实际…

作者头像 李华
网站建设 2026/4/18 8:00:03

墨蝌首次注册登录超全教程!新手小白一看就会

刚接触墨蝌 IPA 重签名工具&#xff0c;不知道怎么注册登录&#xff1f;这篇保姆级教程手把手教你操作&#xff0c;跟着步骤走&#xff0c;一分钟就能搞定&#xff01; 一、墨蝌注册步骤&#xff08;超简单&#xff0c;0 基础也能会&#xff09; 打开墨蝌平台用电脑浏览器访问…

作者头像 李华
网站建设 2026/4/18 7:56:07

墨蝌签名点数充值教程!再也不愁签名没点数啦

使用墨蝌 IPA 重签名工具时&#xff0c;签名操作需要消耗点数&#xff0c;不少小伙伴不知道怎么充值&#xff1f;这篇保姆级教程手把手教会你&#xff0c;再也不用担心点数不够用&#xff01; 一、墨蝌签名点数充值步骤&#xff08;超简单&#xff0c;三步搞定&#xff09; 登…

作者头像 李华
网站建设 2026/4/18 8:38:21

学长亲荐8个降AI率平台,千笔AI帮你精准降AIGC

AI降重工具&#xff1a;让论文更“自然”的秘密武器 在如今的学术写作中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;已经成为一种常见现象。无论是课程论文、毕业设计还是研究性文章&#xff0c;很多同学都曾因为AI痕迹过重而被查重系统标记&#xff0c;甚至影响成绩。…

作者头像 李华
网站建设 2026/4/17 17:51:04

低学历如何转行it,学什么技术好?低学历转行IT必看!

低学历如何转行it&#xff0c;学什么技术好&#xff1f;低学历转行IT必看&#xff01;2025年最靠谱的2个方向&#xff1a;运维与网络安全&#xff0c;附学习路径和薪资真相&#xff01; 导语&#xff1a; “学历低&#xff0c;能转行IT吗&#xff1f;”“没有技术背景&#xf…

作者头像 李华