Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าองค์ประกอบอาร์เรย์อยู่ติดกันในเวลา O(n) และช่องว่าง O(1) (จัดการทั้งตัวเลขบวกและลบ) ใน Python


สมมติว่าเรามีอาร์เรย์ของตัวเลขที่ไม่เรียงลำดับที่เรียกว่า nums เราต้องตรวจสอบว่ามีค่าต่อเนื่องกันหรือไม่ ควรรองรับค่าลบด้วย

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[-3, 5, 1, -2, -1, 0, 2, 4, 3] ผลลัพธ์จะเป็นจริงเนื่องจากองค์ประกอบคือ 3, 4, 5, 6, 7, 8.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ขนาด :=ขนาดของตัวเลข
  • init_term :=inf
  • สำหรับฉันในช่วง 0 ถึงขนาด ทำ
    • ถ้า nums[i]
    • init_term :=nums[i]
  • ap_sum :=ผลหารของ ((ขนาด * (2 * init_term + (ขนาด - 1) * 1)) / 2)
  • ผลรวม :=ผลรวมขององค์ประกอบทั้งหมดของ nums
  • คืนค่า จริง เมื่อ ap_sum เท่ากับยอดรวม มิฉะนั้น เท็จ
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    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