Python中检查数组元素是否连续(O(n)时间和O(1)空间)(处理正数和负数)


假设我们有一个名为nums的无序数字数组。我们必须检查它是否包含连续的值,它也应该支持负数。

因此,如果输入类似于nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3],则输出为true,因为元素为3, 4, 5, 6, 7, 8。

为了解决这个问题,我们将遵循以下步骤:

  • size := nums的大小
  • init_term := inf (无穷大)
  • for i in range 0 to size:
    • if nums[i] < init_term:
      • init_term := nums[i]
  • ap_sum := ((size * (2 * init_term + (size - 1) * 1)) / 2)的商
  • total := nums所有元素的和
  • 如果ap_sum与total相同则返回true,否则返回false

让我们看看下面的实现,以便更好地理解:

示例

在线演示

def solve(nums):
   size = len(nums)
   init_term = 999999
   for i in range(size):
      if nums[i] < init_term:
         init_term = nums[i]
   ap_sum = (size * (2 * init_term + (size - 1) * 1)) // 2
   total = sum(nums)
   return ap_sum == total
nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] 
print(solve(nums))

输入

[-3, 5, 1, -2, -1, 0, 2, 4, 3]

输出

True

更新于:2020-12-30

139 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告