檢查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+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告