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

โปรแกรมค้นหาช่วงเวลาที่ต่อเนื่องกันของอาร์เรย์ที่ไม่ซ้ำกันใน Python


สมมติว่าเรามีรายการหมายเลขเฉพาะที่เรียกว่า nums เราต้องหาเมทริกซ์ตัวเลข 2 มิติที่จัดเรียงแล้ว โดยแต่ละรายการแทนช่วงสรุปตัวเลขที่ต่อเนื่องกันเป็นตัวเลข

ดังนั้น หากอินพุตเป็น nums =[10, 11, 12, 15, 16, 17, 28, 30] ผลลัพธ์จะเป็น [[10, 12], [15, 17], [28, 28] , [30, 30]] เช่นเดียวกับในรายการ [10 ถึง 12], [15 ถึง 17] อยู่ติดกัน และ 28 และ 30 อยู่ที่นั่น โดยจะแสดงเป็น [28 ถึง 28] และ [30 ถึง 30]

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

  • เรียงเลขรายการ

  • ใส่อินฟินิตี้ที่ท้ายตัวเลข

  • ans:=รายการใหม่


  • l:=nums[0]

  • สำหรับฉันในช่วง 1 ถึงขนาดของ nums ทำ

    • ถ้า nums[i] ไม่เหมือนกับ nums[i-1] + 1 แล้ว

      • ใส่ [l, nums[i-1]] ต่อท้าย ans

      • l:=nums[i]

  • กลับมาอีกครั้ง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น−

ตัวอย่าง

class Solution:
def solve(self, nums):
   nums.sort()
   nums.append(1e9)
   ans=[]
   l=nums[0]
   for i in range(1,len(nums)):
      if nums[i] != nums[i-1] + 1:
         ans.append([l, nums[i-1]])
         l=nums[i]
   return ans
ob = Solution()
nums = [10, 11, 12, 15, 16, 17, 28, 30]
print(ob.solve(nums))

อินพุต

[10, 11, 12, 15, 16, 17, 28, 30]

ผลลัพธ์

[[10, 12], [15, 17], [28, 28], [30, 30]]