一个 Python 程序从 1 到 n 的 n+1 个数字中找出重复的元素


假设我们有一个名为 nums 的长度为 n + 1 的数字列表。这些数字是从范围 1、2、...、n 中挑选的。如我们所知,根据鸽巢原理,肯定会有重复的元素。我们必须找到并返回它。

因此,如果输入类似于 [2, 1, 4, 3, 3],那么输出将是 3

要解决此问题,我们将按照以下步骤进行 −

  • l := nums 的大小
  • temp := l*(l-1) /2
  • temp_sum := nums 中所有元素之和
  • 返回 (temp_sum - temp)

让我们看看下面的实现以获得更好的理解 −

示例

 动态演示

class Solution:
   def solve(self, nums):
      l = len(nums)
      temp = l*(l-1)/2
      temp_sum = sum(nums)
      return temp_sum-temp
ob = Solution()
print(ob.solve([2, 1, 4, 3, 3]))

输入

[2, 1, 4, 3, 3]

输出

3

更新于: 06-Oct-2020

211 次浏览

启动您的 职业生涯

完成课程以获得认证

开始
广告