news 2026/6/20 23:44:11

解决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/6/12 22:23:31

yolov5跑数据特别慢,如何提升?

&#x1f3c6;本文收录于 《全栈 Bug 调优&#xff08;实战版&#xff09;》 专栏。专栏聚焦真实项目中的各类疑难 Bug&#xff0c;从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解&#xff0c;形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者&…

作者头像 李华
网站建设 2026/6/13 9:49:26

墨蝌用咕噜账号登录教程!安利专业 APP 分发平台咕噜分发

还在为多平台账号切换烦恼&#xff1f;教你一招用咕噜分发账号直接登录墨蝌&#xff0c;轻松搞定 IPA 重签名&#xff01;同时安利这款超实用的开发者神器 ——咕噜分发官网&#xff1a;https://www.gulufenfa.com/#/home/index&#xff0c;内测分发效率直接翻倍&#xff01; …

作者头像 李华
网站建设 2026/6/13 19:00:01

istio流量分发实战:从配置到踩坑全解析

前言 上一小节&#xff0c;istio成功的安装&#xff0c;并且还解决了常见的426的问题&#xff0c;本节内容主要探讨一下istio关于流量转发的问题 按比例分发 配置 需要创建一个backend-v1&#xff0c;它与backend的selector都是/* by 01022.hk - online tools website : 01…

作者头像 李华
网站建设 2026/6/13 19:45:43

论文开头AI检测率100%怎么改?降低绪论AIGC疑似度的实用方法

论文开头AI检测率100%怎么改降低绪论AIGC疑似度的实用方法的核心问题是什么&#xff1f;在深入探讨这个话题之前&#xff0c;我们需要先理解问题的本质。论文开头AI检测率100%怎么改&#xff0c;这是很多同学在处理论文时都会遇到的问题。 AIGC检测系统的工作原理是分析文本的统…

作者头像 李华
网站建设 2026/6/13 15:21:27

罗德与施瓦茨SMIQ06B SMIQ03B SMB100A信号发生器

SMIQ06B Rohde&Schwarz SMIQ06B 6G信号发生器|罗德与施瓦茨|300kHz至6.4GHz R&S SMIQ B系列的信号发生器是针对目前和今后得模拟和数字调制解决方案。这一系列产品尤其考虑到了第三代数字移动无线电领域得未来开发。 R&S SMIQ系列一共包括四种型号&#xff0c;具有…

作者头像 李华