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