สมมติว่าเรามีรายการหมายเลขเฉพาะที่เรียกว่า 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]]