Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 고유한 배열의 연속 간격을 찾는 프로그램

<시간/>

nums라는 고유 숫자 목록이 있다고 가정합니다. 우리는 각 목록이 숫자로 연속적인 숫자를 요약하는 포함 간격을 나타내는 정렬된 2D 숫자 행렬을 찾아야 합니다.

따라서 입력이 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:=숫자[0]

  • 범위 1에서 숫자 크기까지의 i에 대해

    • nums[i]가 nums[i-1] + 1과 같지 않으면

      • ans

        끝에 [l, nums[i-1]] 삽입
      • l:=숫자[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]]