<分区>
是否有更优化的解决方案来解决所述问题?
给定一个包含“N”个元素的数组“arr”和一个数字“M”,找到满足方程式的最小索引“z”。 [ ] 被视为 floor()。
代码:
counts=0
ans=0
while(ans==0):
s=0
for i in range(counts,len(arr)):
s+=int(arr[i]/(i+1-counts))
if(s>M):
break
if((i+1)==len(arr) and s<=M):
print(counts)
ans=1
counts+=1
解释:
从左到右检查数组。第一个满足条件的索引就是答案。这比从右到左考虑更优化。
如果在计算过程中的任何时候,'s'被认为大于 M,则打破循环并考虑下一个。这比完全计算 's' 更优化。
示例:
输入:
N=3 M=3
arr=[1 2 3]
输出:
0
这将给出答案 0,因为第 0 个索引包含满足给定关系的第一个元素。
提前致谢。