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 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.