数组元素按阈值K拆分后的个数总和求解及代码纠错问题
数组拆分计数问题调试
需求描述
给定包含N个正整数的数组Arr与阈值K,需将数组的每个元素拆分为若干个数值不超过K的数之和,求解所有元素拆分后得到的数的个数总和。
示例输入:N = 4,K = 3,Arr[] = {5, 8, 10, 13}
预期输出:14
原代码存在的问题
原代码存在多个语法、逻辑层面的错误,具体如下:
- 缩进不符合Python规范:函数体、for循环、分支逻辑都没有正确缩进,直接运行会报语法错误
- if分支逻辑完全错误:将赋值语句
count = arr[i]/k作为判断条件,且分支内直接return 1,会导致遍历第一个元素时就提前终止函数返回错误结果,没有完成全数组的计数 - 变量定义与作用域错误:没有在循环外初始化累加总和的变量,
count、count1的定义位置混乱,循环外调用arr[i]会因为索引溢出报错 - 除法使用错误:使用普通除法
/会得到浮点数结果,计数为整数场景应当使用整数除法// - 计数逻辑错误:没有逐元素累加拆分数量,单个元素的拆分数量本质是求
arr[i]/K的向上取整值,原代码的分支判断和累加逻辑完全不符合需求
正确实现
单个元素的拆分数量可以用整数除法实现向上取整,公式为(元素值 + K -1) // K,遍历所有元素累加即可得到最终结果:
def totalCount(self, arr, n, k): total = 0 for num in arr: total += (num + k - 1) // k return total
示例验证
代入示例输入计算:
- 5拆分:(5+3-1)//3 = 2个
- 8拆分:(8+3-1)//3 = 3个
- 10拆分:(10+3-1)//3 = 4个
- 13拆分:(13+3-1)//3 = 5个
总和2+3+4+5=14,和预期输出一致。
内容的提问来源于stack exchange,提问作者manzar313
相关产品推荐
相关产品推荐

