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를 유지하면 길이가 4인 증가 부분 수열이 되고, 1, 2, 5, 7과 1, 2, 4, 7도 마찬가지입니다. 다섯 개의 값을 선택해 계속 증가하도록 할 수는 없으므로 답은 4입니다.

lock icon제출 시 숨은 테스트 +20개

challenge icon

후속 질문

길이만이 아니라 가장 긴 증가 부분 수열 자체를 반환하면서도 O(n log n) 시간에 실행할 수 있나요?

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

케이스 1

케이스 2

케이스 3

입력

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

기대값

4