gpt4 book ai didi

python 3 : Solving arrayChange in CodeFights

转载 作者:行者123 更新时间:2023-11-28 18:14:34 24 4
gpt4 key购买 nike

我目前正在研究 Code Fights Arcade 的 arrayChange 关卡。这是目标: 给你一个整数数组。在每一步中,您都可以 恰好将其元素之一增加一。找到最小数量的
从输入中获得严格递增序列所需的移动。

例子

对于 inputArray = [1, 1, 1],输出应该是 arrayChange(inputArray) = 3

我用 Python 3 编写了这段代码:

def arrayChange(inputArray):
original = inputArray[:]
count = 0
if len(set(inputArray)) == 1:
return ((len(inputArray)-1)**2 + (len(inputArray)-1)) / 2
elif sorted(inputArray) == inputArray:
return 0
for index, value in enumerate(inputArray):
if index != len(inputArray) - 1 and value > inputArray[index+1]:
inputArray[index+1] += abs(inputArray[index+1] - value) + 1
elif index != len(inputArray) - 1 and value == inputArray[index+1]:
inputArray[index+1] += 1
elif index == len(inputArray) - 1 and value < inputArray[index-1]:
inputArray[index] += inputArray[index-1] - value + 1
print (inputArray)
for index, value in enumerate(inputArray):
count = count + abs(value - original[index])
return count

它通过了所有非隐藏测试,但未能通过第 7 次隐藏测试。有人可以帮我弄清楚我的代码有什么错误吗?非常感谢您!

最佳答案

问题出在这里:

elif sorted(inputArray) == inputArray: return 0

以这个数组为例:[1, 1, 2]。它是相同的排序。但是,输出应该是 2:[1, 1 + 1, 2 + 1]。您应该能够删除该条件以通过所有案例。

简单来说:

您的代码可以简化为:

def arrayChange(inputArray):
sum = 0
q = inputArray[0]
for i in inputArray[1:]:
if i <= q:
sum += q-i+1
q = q+1
else:
q = i
return sum

关于 python 3 : Solving arrayChange in CodeFights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com