Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem các phần tử của mảng có liên tiếp nhau không trong O (n) thời gian và O (1) không gian (Xử lý cả số dương và số âm) trong Python

Giả sử chúng ta có một mảng các số chưa được sắp xếp được gọi là nums. Chúng tôi phải kiểm tra xem nó có chứa các giá trị liền nhau hay không, nó cũng phải hỗ trợ số âm.

Vì vậy, nếu đầu vào giống như nums =[-3, 5, 1, -2, -1, 0, 2, 4, 3], thì đầu ra sẽ đúng vì các phần tử là 3, 4, 5, 6, 7, 8.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • size:=kích thước của nums
  • init_term:=inf
  • đối với tôi trong phạm vi từ 0 đến kích thước, hãy thực hiện
    • nếu nums [i]
    • init_term:=nums [i]
  • ap_sum:=thương số của ((size * (2 * init_term + (size - 1) * 1)) / 2)
  • total:=tổng của tất cả các phần tử của nums
  • trả về true khi ap_sum giống với tổng, ngược lại là false
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    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))

    Đầu vào

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

    Đầu ra

    True