检查Python数组元素是否连续


假设我们有一个名为nums的数字数组。我们必须检查它是否包含连续的值。

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

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

  • 如果nums的大小< 1,则
    • 返回False
  • min_val := nums的最小值,max_val := nums的最大值
  • 如果(max_val - min_val + 1)与nums的大小相同,则
    • 对于i从0到nums的大小的范围,执行
      • 如果nums[i] < 0,则
        • j:= -nums[i] - min_val
      • 否则,
        • j := nums[i] - min_val
      • 如果nums[j] > 0,则
        • nums[j] := -nums[j]
      • 否则,
        • 返回False
    • 返回True
  • 返回False

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

示例

 在线演示

def solve(nums):
   if len(nums) < 1:
      return False
   min_val = min(nums)
   max_val = max(nums)
   if max_val - min_val + 1 == len(nums):
      for i in range(len(nums)):
         if nums[i] < 0:
            j = -nums[i] - min_val
         else:
            j = nums[i] - min_val
            if nums[j] > 0:
               nums[j] = -nums[j]
            else:
               return False
      return True
   return False
nums = [6, 8, 3, 5, 4, 7]
print(solve(nums))

输入

[6, 8, 3, 5, 4, 7]

输出

True

更新于:2020-12-30

6K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.