Search

Next Greater Element I

문제 설명 : nums2과 nums2의 일부 데이터를 가져온 nums1가 존재한다. 이때 nums1의 숫자가 nums2에서 존재하는 인덱스 이후 더 큰 값이 존재하는지 확인하고 반환한다.
풀이 방법
nums1의 숫자들의 순회 지점을 바로 찾기 위해 nums2에서 각 숫자의 인덱스를 저장
순회 시, 기본 값은 미리 넣어두고 조건에 맞는 숫자 존재 시 변경하는 방식 사용
시간복잡도 : O(N2)O(N^2)
성공 코드
# O(N^2) class Solution: def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]: num_info = {v: i for i, v in enumerate(nums2)} result = [] # nums1의 숫자 확인 for num in nums1: # 기본 값인 -1 추가 result.append(-1) # 만약 nums2에 현재 순회중인 num보다 큰 값이 존재하면, 기본 값 -1을 해당 값으로 변경 for i in range(num_info[num] + 1, len(nums2)): if nums2[i] > num: result[-1] = nums2[i] break return result
Python
복사