Menu
CoddyTech

Longest Increasing Subsequence

정수 목록 nums가 주어집니다. 부분 수열은 일부 요소를 원래 순서대로 유지하고 나머지는 버리는 것으로, 유지된 요소들이 서로 인접할 필요는 없습니다. 왼쪽에서 오른쪽으로 값이 엄격하게 증가하는 가장 긴 부분 수열의 길이를 반환하세요. 연속된 두 값이 같으면 증가하는 것으로 간주하지 않습니다.

함수

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
선택할 정수 목록
반환값integer
가장 긴 엄격한 증가 부분 수열의 길이

제약 조건

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

예제

입력
nums = [3, 1, 8, 2, 5, 9, 4, 7]
출력
4
설명
1, 2, 5, 9는 증가하며, 1, 2, 5, 7과 1, 2, 4, 7도 마찬가지입니다. 길이는 4입니다. 다섯 개의 값을 선택해 계속 증가하게 할 수는 없습니다.
challenge icon

후속 질문

길이와 함께 가장 긴 증가 부분 수열 자체도 반환하면서, 여전히 O(n log n) 시간에 실행할 수 있나요?

코드 초기화
def lengthOfLIS(nums):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

nums = [3, 1, 8, 2, 5, 9, 4, 7]

예상 출력

4