酷代码 AI
菜单
服务商

题目描述 孙悟空的金箍棒可以变高也可以变矮还可以变出多个金箍棒。 这天孙悟空无聊变出了N个长短不一的金箍棒,这些金箍棒之间相互吵闹,攀比谁高。 当孙悟空每次手指其中一个金箍棒时,这个金箍棒高度不变,其他的金箍棒高度都会增加1。 只有当所有金箍棒高度都一样时,他们之间才不相互吵闹,也不会再增加高度,保持静止。 分别给定N个金箍棒的初始高度,请你帮助孙悟空计算一下至少手指几次可以让N个金箍棒高度都一样。 例如: 有3个金箍棒,初始高度分别为2,3,4。 第一次手指第三个金箍棒,第三个金箍棒高度不变,第一和第二个金箍棒高度分别增加1,变为3,4,4; 第二次手指第二个金箍棒,第二个金箍棒高度不变,第一和第三个金箍棒高度分别增加1,变为4,4,5; 第三次手指第三个金箍棒,第三个金箍棒高度不变,第一和第二个金箍棒高度分别增加1,变为5,5,5; 这时3个金箍棒的高度都为5,手指3次后金箍棒高度一样。所以至少手指3次才能使金箍棒高度都一样。 输入描述 输入N个非全部相等的正整数(N个数不全部相等,2<N<31),且之间以英文逗号隔开, 分别表示N个金箍棒的初始高度 输出描

以下是解决该问题的Python代码: ```python # 获取用户输入的金箍棒初始高度 heights = list(map(int, input().split(","))) # 找出最小的金箍棒高度 min_height = min(heights) # 计算每个金箍棒与最小高度的差值,并求和 total_count = 0 for height in heights: total_count += height - min_height # 输出结果 print(total_count) ``` 代码解释 1. 输入处理:使用`input().split(",")`获取用户输入的以逗号分隔的字符串,再使用`map(int, ...)`将每个字符串转换为整数,最后使用`list(...)`将其转换为列表`heights`。 2. 找出最小高度:使用`min(heights)`找出列表中最小的金箍棒高度`min_height`。 3. 计算手指次数:遍历每个金箍棒的高度,计算其与最小高度的差值,并将这些差值累加起来,得到的总和就是至少需要手指的次数。 4. 输出结果:使用`print(total_count)`输出计算得到的手指次数。 复杂度分析 - 时间复杂度:$O(n)$,其中$n$是金箍棒的数量。主要时间开销在于遍历金箍棒的高度列表。 - 空间复杂度:$O(n)$,主要空间开销在于存储金箍棒的高度列表。 [2025-12-06 21:05:40 | AI问答 | 315点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多