린트코드
현재(2016-08-22)까지 LintCode Online Judge에는 289 문제가 있습니다. 최근 문제가 늘어나고 있습니다. 전체 289 개 문제의 분류는 다음과 같습니다. 더 많은 문제와 솔루션을 보려면 내 LeetCode-Solutions 저장소를 참조하세요. 전체 요약과 더 나은 솔루션을 위해 계속 업데이트하겠습니다. 업데이트를 계속 지켜봐 주시기 바랍니다.
알고리즘
- 비트 조작
- 정렬
- 끈
- 연결리스트
- 수학
- 나무
- 스택
- 대기줄
- 더미
- 해시 테이블
- 데이터 구조
- 종류
- 재귀
- 이진 검색
- 너비 우선 검색
- 깊이 우선 검색
- 역추적
- 이진 검색 트리
- 동적 프로그래밍
- 탐욕스러운
- OO디자인
- 시스템 설계
비트 조작
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 1 | A + B 문제 | C++ | 오(1) | 오(1) | 중간 | | |
| 82 | 단일 숫자 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 83 | 단일 번호 II | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 84 | 단일 번호 III | C++ | 에) | 오(1) | 중간 | CTCI | |
| 142 | O(1) 2의 거듭제곱을 확인합니다. | C++ | 오(1) | 오(1) | 쉬운 | | |
| 179 | 업데이트 비트 | C++ | 오(1) | 오(1) | 중간 | CTCI | |
| 181 | 플립 비트 | C++ | 오(1) | 오(1) | 쉬운 | CTCI | |
| 196 | 누락된 숫자 찾기 | C++ | 에) | 오(1) | 중간 | | |
| 365 | 이진수로 1을 센다 | C++ | 오(1) | 오(1) | 쉬운 | CTCI | |
정렬
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 6 | 정렬된 배열 병합 | C++ | O(m + n) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
| 8 | 문자열 회전 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 9 | 피즈 버즈 | C++ | 에) | 오(1) | 쉬운 | | |
| 30 | 삽입 간격 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | |
| 31 | 파티션 어레이 | C++ | 에) | 오(1) | 중간 | | 두 개의 포인터 |
| 32 | 최소 창 하위 문자열 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 38 | 2D 매트릭스 II 검색 | C++ | O(m + n) | 오(1) | 중간 | 에피 | |
| 39 | 회전 정렬된 배열 복구 | C++ | 에) | 오(1) | 쉬운 | | |
| 46 | 다수수 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 47 | 다수수 II | C++ | 에) | 오(1) | 중간 | 에피 | |
| 48 | 다수수 III | C++ | 에) | 좋아요) | 중간 | 에피 | |
| 49 | 대소문자별로 문자 정렬 | C++ | 에) | 오(1) | 중간 | | 두 개의 포인터 |
| 50 | 배열 자체 제외의 결과 | C++ | 에) | 오(1) | 쉬운 | | |
| 51 | 이전 순열 | C++ | 에) | 오(1) | 중간 | | |
| 52 | 다음 순열 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 57 | 3 합 | C++ | 오(n^2) | 오(1) | 중간 | Leet코드 | 두 포인터, 정렬 |
| 58 | 4 합계 | C++ | 오(n^3) | 오(1) | 중간 | Leet코드 | 해시시 |
| 59 | 3 가장 가까운 합계 | C++ | 오(n^2) | 오(1) | 중간 | Leet코드 | 두 포인터, 정렬 |
| 64 | 정렬된 배열 병합 II | C++ | O(m + n) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
| 100 | 정렬된 배열에서 중복 제거 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
| 101 | 정렬된 배열 II에서 중복 제거 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
| 133 | 가장 긴 단어 | C++ | 에) | 에) | 쉬운 | | |
| 144 | 양수와 음수 인터리빙 | C++ | 에) | 오(1) | 중간 | | 두 개의 포인터 |
| 161 | 이미지 회전 | C++ | 오(n^2) | 오(1) | 중간 | Leet코드 | |
| 162 | 매트릭스 0 설정 | C++ | 오(m*n) | 오(1) | 중간 | Leet코드 | |
| 172 | 요소 제거 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
| 185 | 매트릭스 지그재그 순회 | C++ | 오(m*n) | 오(1) | 쉬운 | | |
| 189 | 첫 번째 누락 양성 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | 해시시 |
| 190 | 다음 순열 II | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 200 | 가장 긴 회문 부분 문자열 | C++ | 에) | 에) | 중간 | Leet코드 | Manacher's Algorithm |
| 363 | 빗물 가두기 | C++ | 에) | 오(1) | 중간 | Leet코드 | 두 개의 포인터, 까다로운 |
| 373 | 홀수와 짝수의 파티션 배열 | C++ | 에) | 오(1) | 쉬운 | | 두 개의 포인터 |
| 374 | 나선형 매트릭스 | C++ | 오(m*n) | 오(1) | 중간 | Leet코드 | |
| 381 | 나선형 매트릭스 II | C++ | 오(n^2) | 오(1) | 중간 | Leet코드 | |
| 382 | 삼각형 개수 | C++ | 오(n^2) | 오(1) | 중간 | | 두 개의 포인터 |
| 383 | 물이 가장 많은 용기 | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | 두 개의 포인터 |
| 388 | 순열 순서 | C++ | 오(n^2) | 에) | 중간 | Leet코드 | |
| 389 | 유효한 스도쿠 | C++ | 오(9^2) | 오(9) | 쉬운 | Leet코드 | |
| 404 | 하위 배열 합계 II | C++ | O(로그인) | 에) | 딱딱한 | | 두 개의 포인터, 이진 검색 |
| 405 | 부분행렬 합 | C++ | O(m * n^2) | 오(m) | 딱딱한 | | 해시시 |
| 406 | 최소 크기 하위 배열 합계 | C++ | 에) | 오(1) | 중간 | Leet코드 | 두 개의 포인터, 이진 검색 |
| 539 | 0 이동 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | 두 개의 포인터 |
끈
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 13 | strStr | C++ | O(n + k) | 좋아요) | 쉬운 | Leet코드 | KMP Algorithm |
| 53 | 문자열의 단어 반전 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | |
| 54 | 문자열을 정수로(atoi) | C++ | 에) | 오(1) | 딱딱한 | Leet코드 | |
| 55 | 문자열 비교 | C++ | 에) | 오(c) | 쉬운 | | |
| 78 | 가장 긴 공통 접두사 | C++ | 에) | 오(1) | 중간 | | |
| 157 | 독특한 캐릭터 | C++ | 에) | 오(1) | 쉬운 | CTCI | |
| 158 | 두 문자열은 아나그램입니다 | C++ | 에) | 오(1) | 쉬운 | | |
| 171 | 철자 바꾸기 | C++ | O(n * klogk) | 오(m) | 쉬운 | Leet코드, EPI | |
| 212 | 공간 교체 | C++ | 에) | 오(1) | 쉬운 | | |
| 407 | 플러스원 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 408 | 바이너리 추가 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 415 | 유효한 회문 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 417 | 유효한 번호 | C++ | 에) | 오(1) | 딱딱한 | Leet코드 | 오토마타 |
| 420 | 세고 말하다 | C++ | O(n * 2^n) | 오(2^n) | 쉬운 | Leet코드 | |
| 422 | 마지막 단어의 길이 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 524 | 왼쪽 패드 | C++ | O(p + n) | 오(1) | 쉬운 | Leet코드 | |
연결리스트
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 16 | 두 개의 정렬된 목록 병합 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | |
| 35 | 역방향 연결리스트 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | |
| 36 | 역방향 연결리스트 II | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 96 | 파티션 목록 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 98 | 목록 정렬 | C++ | O(로그인) | 오(로그인) | 중간 | Leet코드, EPI | |
| 99 | 목록 재정렬 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 102 | 연결리스트 사이클 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 103 | 연결리스트 사이클 II | C++ | 에) | 오(1) | 딱딱한 | Leet코드 | |
| 104 | k개의 정렬된 목록 병합 | C++ | O(n * 로그k) | 오(1) | 중간 | Leet코드 | 쌓고, 나누고, 정복하라 |
| 105 | 무작위 포인터로 목록 복사 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 106 | 정렬된 목록을 이진 검색 트리로 변환 | C++ | 에) | 오(로그인) | 중간 | Leet코드, EPI | |
| 112 | 정렬된 목록에서 중복 제거 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | |
| 113 | 정렬된 목록 II에서 중복 제거 | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 166 | 목록의 마지막 노드에서 N번째 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 167 | 두 개의 목록 합계 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 170 | 목록 회전 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 173 | 삽입 정렬 목록 | C++ | 오(n^2) | 오(1) | 쉬운 | Leet코드 | |
| 174 | 목록 끝에서 N번째 노드 제거 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 223 | 회문 연결리스트 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 372 | 단일 연결 목록 중간에 있는 노드 삭제 | C++ | 오(1) | 오(1) | 쉬운 | CTCI | |
| 380 | 두 연결리스트의 교차점 | C++ | O(m + n) | 오(1) | 쉬운 | Leet코드 | |
| 450 | k-그룹의 역방향 노드 | C++ | 에) | 오(1) | 딱딱한 | Leet코드 | |
| 451 | 쌍으로 노드 교환 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 452 | 연결 목록 요소 제거 | C++ | 에) | 오(1) | 순진한 | Leet코드 | |
| 511 | 연결리스트의 두 노드 교환 | C++ | 에) | 오(1) | 중간 | | |
나무
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 7 | 이진 트리 직렬화 | C++ | 에) | 오) | 중간 | | |
| 85 | 이진 검색 트리에 노드 삽입 | C++ | 오) | 오(1) | 쉬운 | | |
| 88 | 가장 낮은 공통 조상 | C++ | 에) | 오) | 중간 | 에피 | |
| 175 | 이진 트리 반전 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 442 | 트라이 구현 | C++ | 에) | 오(1) | 중간 | Leet코드 | 트라이 |
스택
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 12 | 최소 스택 | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 40 | 두 개의 스택으로 대기열 구현 | C++ | O(1), 상각 | 에) | 중간 | 에피 | |
| 66 | 이진 트리 선주문 순회 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | Morris Traversal |
| 67 | 이진 트리 중위순회 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | Morris Traversal |
| 68 | 이진 트리 후위 순회 | C++ | 에) | 오(1) | 쉬운 | Leet코드, EPI | Morris Traversal |
| 122 | 히스토그램에서 가장 큰 직사각형 | C++ | 에) | 에) | 딱딱한 | Leet코드, EPI | 오름차순 스택 |
| 126 | 맥스 트리 | C++ | 에) | 에) | 딱딱한 | | 내림차순 스택 |
| 367 | 표현식 트리 구축 | C++ | 에) | 에) | 딱딱한 | | |
| 368 | 발현 평가 | C++ | 에) | 에) | 딱딱한 | | |
| 369 | 표현식을 폴란드어 표기법으로 변환 | C++ | 에) | 에) | 딱딱한 | | |
| 370 | 표현식을 역폴란드 표기법으로 변환 | C++ | 에) | 에) | 딱딱한 | | |
| 421 | 경로 단순화 | C++ | 에) | 에) | 중간 | Leet코드 | |
| 423 | 유효한 괄호 | C++ | 에) | 에) | 쉬운 | Leet코드 | |
| 424 | 역폴란드 표기법 평가 | C++ | 에) | 에) | 중간 | Leet코드 | |
| 473 | 단어 추가 및 검색 | C++ | O(최소(n, h)) | O(분(n, h) | 중간 | Leet코드 | 트라이 |
| 510 | 최대 직사각형 | C++ | 오(m*n) | 에) | 딱딱한 | Leet코드 | 오름차순 스택 |
| 528 | 중첩된 목록 반복자 평면화 | C++ | 에) | 오) | 중간 | Leet코드 | |
대기줄
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 362 | 슬라이딩 윈도우 최대 | C++ | 에) | 좋아요) | 딱딱한 | 에피 | 데크, 트리키 |
더미
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 4 | 추악한 숫자 II | C++ | 에) | 오(1) | 중간 | CTCI | BST, 힙 |
| 81 | 데이터 스트림 중앙값 | C++ | O(로그인) | 에) | 딱딱한 | 에피 | BST, 힙 |
| 130 | 힙파이 | C++ | 에) | 오(1) | 중간 | | |
| 364 | 빗물 가두기 II | C++ | O(m * n * (logm + logn)) | 오(m*n) | 딱딱한 | | BFS, 힙, 까다로운 |
| 518 | 정말 못생긴 숫자 | C++ | 오(n*k) | O(n + k) | 중간 | Leet코드 | BST, 힙 |
해시 테이블
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 56 | 2 합 | C++ | 에) | 에) | 중간 | Leet코드 | |
| 124 | 가장 긴 연속 시퀀스 | C++ | 에) | 에) | 중간 | Leet코드, EPI | |
| 128 | 해시 함수 | C++ | 에) | 오(1) | 쉬운 | | |
| 129 | 재해싱 | C++ | 에) | 에) | 중간 | | |
| 138 | 하위 배열 합계 | C++ | 에) | 에) | 쉬운 | | |
| 186 | 라인의 최대 포인트 | C++ | 오(n^2) | 에) | 중간 | Leet코드 | |
| 211 | 문자열 순열 | C++ | 에) | 오(1) | 쉬운 | | |
| 384 | 반복되는 문자가 없는 가장 긴 부분 문자열 | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 386 | 최대 K개의 고유 문자를 포함하는 가장 긴 부분 문자열 | C++ | 에) | 에) | 중간 | | |
| 432 | 유방향 그래프에서 약한 연결 성분 찾기 | C++ | O(로그인) | 에) | 중간 | | 유니온 찾기 |
| 434 | 섬의 수 II | C++ | 좋아요) | 좋아요) | 딱딱한 | | 유니온 찾기 |
| 488 | 해피넘버 | C++ | 좋아요) | 좋아요) | 쉬운 | Leet코드 | |
| 547 | 두 배열의 교차점 | C++ | O(m + n) | O(최소(m, n)) | 쉬운 | EPI, LeetCode | 두 개의 포인터, 이진 검색 |
| 548 | 두 배열의 교차점 II | C++ | O(m + n) | O(최소(m, n)) | 쉬운 | EPI, LeetCode | 두 개의 포인터, 이진 검색 |
데이터 구조
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 134 | LRU 캐시 | C++ | 오(1) | 좋아요) | 딱딱한 | Leet코드, EPI | 목록, 해시 |
수학
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 2 | 후행 0 | C++ | 오(1) | 오(1) | 쉬운 | Leet코드 | |
| 3 | 자릿수 | C++ | 오(1) | 오(1) | 중간 | CTCI | |
| 114 | 고유한 경로 | C++ | O(최소(m, n)) | 오(1) | 쉬운 | LeetCode, CTCI | DP, 수학 |
| 163 | 고유한 이진 검색 트리 | C++ | 에) | 오(1) | 중간 | CTCI | DP, 수학, Catalan Number |
| 180 | 이진 표현 | C++ | 오(1) | 오(1) | 딱딱한 | CTCI | |
| 197 | 순열 지수 | C++ | 오(n^2) | 오(1) | 쉬운 | | |
| 198 | 순열 지수 II | C++ | 오(n^2) | 에) | 중간 | | |
| 394 | 한 줄에 동전 | C++ | 오(1) | 오(1) | 쉬운 | | |
| 411 | 그레이 코드 | C++ | O(2^n) | 오(1) | 중간 | Leet코드 | |
| 413 | 역방향 정수 | C++ | 오(1) | 오(1) | 중간 | Leet코드 | |
| 414 | 두 정수 나누기 | C++ | 오(1) | 오(1) | 중간 | Leet코드 | |
| 418 | 정수에서 로마자로 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 419 | 로마자를 정수로 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 428 | 힘(x,n) | C++ | 오(1) | 오(1) | 중간 | Leet코드 | |
| 445 | 코사인 유사성 | C++ 파이썬 | 에) | 오(1) | 쉬운 | | |
| 517 | 추악한 숫자 | C++ | 오(1) | 오(1) | 쉬운 | CTCI, LeetCode | |
종류
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 5 | K번째로 큰 요소 | C++ | O(n) ~ O(n^2) | 오(1) | 중간 | 에피 | 두 개의 포인터, 빠른 정렬 |
| 80 | 중앙값 | C++ | 에) | 오(1) | 쉬운 | 에피 | |
| 139 | 가장 가까운 하위 배열 합계 | C++ | O(로그인) | 에) | 중간 | | 종류 |
| 143 | 색상 정렬 II | C++ | 에) | 오(1) | 중간 | | |
| 148 | 색상 정렬 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 156 | 병합 간격 | C++ | O(로그인) | 오(1) | 쉬운 | Leet코드, EPI | |
| 184 | 가장 큰 숫자 | C++ | O(로그인) | 오(1) | 중간 | Leet코드 | |
| 366 | 피보나치 | C++ | 에) | 오(1) | 쉬운 | | |
| 379 | 최소 수를 구성하도록 배열을 재정렬합니다. | C++ | O(로그인) | 오(1) | 중간 | Leet코드 | |
| 387 | 가장 작은 차이 | C++ | O(최대(m, n) * log(최소(m, n))) | 오(1) | 중간 | | 두 개의 포인터, 이진 검색 |
| 399 | 너트 및 볼트 문제 | C++ | O(로그인) | 오(로그인) | 중간 | | 빠른 정렬 |
| 400 | 최대 간격 | C++ 파이썬 | 에) | 에) | 딱딱한 | Leet코드 | 버킷 정렬 |
| 463 | 정수 정렬 | C++ | 오(n^2) | 오(1) | 쉬운 | | 삽입정렬, 선택정렬, 버블정렬 |
| 464 | 정수 정렬 II | C++ | O(로그인) | 에) | 쉬운 | | 병합 정렬, 힙 정렬, 퀵 정렬 |
| 507 | 흔들기 정렬 II | C++ | 평균 O(n) | 오(1) | 중간 | Leet코드 | 트라이 파티션 |
| 508 | 흔들기 정렬 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
재귀
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 22 | 평면화 목록 | C++ | 에) | 오) | 쉬운 | | |
| 72 | 중위 순회 및 후위 순회에서 이진 트리 생성 | C++ | 에) | 에) | 중간 | Leet코드, EPI | |
| 73 | 선주문 및 중위 순회에서 이진 트리 구성 | C++ | 에) | 에) | 중간 | Leet코드, EPI | |
| 93 | 균형 잡힌 이진 트리 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 94 | 이진 트리 최대 경로 합계 | C++ | 에) | 오) | 중간 | Leet코드 | |
| 95 | 이진 검색 트리 검증 | C++ | 에) | 오) | 중간 | Leet코드 | |
| 97 | 이진 트리의 최대 깊이 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 131 | 건물 개요 | C++ 파이썬 | O(로그인) | 에) | 딱딱한 | 에피 | 정렬, BST |
| 140 | 빠른 전력 | C++ | 오(로그인) | 오(1) | 중간 | | |
| 155 | 이진 트리의 최소 깊이 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 164 | 고유한 이진 검색 트리 II | C++ | O(n * 4^n / n^(3/2)) | 에) | 중간 | Leet코드 | |
| 177 | 정렬된 배열을 최소 높이의 이진 검색 트리로 변환 | C++ | 에) | 오(로그인) | 쉬운 | Leet코드 | |
| 201 | 세그먼트 트리 구축 | C++ | 에) | 오) | 중간 | | 세그먼트 트리, BST |
| 202 | 세그먼트 트리 쿼리 | C++ | 오) | 오) | 중간 | | 세그먼트 트리, BST |
| 203 | 세그먼트 트리 수정 | C++ | 오) | 오) | 중간 | | 세그먼트 트리, BST |
| 205 | 간격 최소 수 | C++ | 빌드 트리: O(n) , 쿼리: (h) | 오) | 딱딱한 | | 세그먼트 트리, BST |
| 206 | 간격 합계 | C++ | 빌드 트리: O(n) , 쿼리: O(logn) | 에) | 딱딱한 | | 세그먼트 트리, BIT |
| 207 | 간격합 II | C++ | 빌드 트리: O(n) , 쿼리: O(logn) , 수정: O(logn) | 에) | 딱딱한 | | 세그먼트 트리, BIT |
| 245 | 하위 트리 | C++ | 오(m*n) | 오(1) | 쉬운 | | Morris Traversal |
| 247 | 세그먼트 트리 쿼리 II | C++ | 오) | 오) | 딱딱한 | | 세그먼트 트리, BST |
| 248 | 더 작은 수의 수 | C++ | 빌드 트리: O(n) , 쿼리: O(logn) | 오) | 중간 | | 세그먼트 트리, BST |
| 371 | 재귀로 숫자 인쇄하기 | C++ | 에) | 에) | 중간 | | |
| 375 | 클론 바이너리 트리 | C++ | 에) | 오) | 쉬운 | | |
| 378 | 이진 검색 트리를 이중 연결 목록으로 변환 | C++ | 에) | 오) | 중간 | | |
| 439 | 세그먼트 트리 구축 II | C++ | 에) | 오) | 중간 | | 세그먼트 트리, BST |
| 453 | 이진 트리를 연결 목록으로 평면화 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 469 | 동일 이진 트리 | C++ | 에) | 오) | 쉬운 | | |
| 532 | 역방향 쌍 | C++ | O(로그인) | 에) | 중간 | 그 자체보다 작은 수의 개수의 변형 | BIT, 병합 정렬 |
| 535 | 집강도 III | C++ | 에) | 오) | 중간 | Leet코드 | |
이진 검색
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 14 | 대상의 첫 번째 위치 | C++ | 오(로그인) | 오(1) | 쉬운 | | |
| 28 | 2D 매트릭스 검색 | C++ | O(logm + logn) | 오(1) | 쉬운 | Leet코드 | |
| 60 | 삽입 위치 검색 | C++ | 오(로그인) | 오(1) | 쉬운 | Leet코드 | |
| 61 | 범위 검색 | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 62 | 회전 정렬 배열에서 검색 | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 63 | 회전 정렬 배열에서 검색 II | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 65 | 두 개의 정렬된 배열의 중앙값 | C++ | O(log(최소(m, n))) | 오(1) | 딱딱한 | Leet코드, EPI | 교활한 |
| 74 | 첫 번째 잘못된 버전 | C++ | 오(로그인) | 오(1) | 중간 | | |
| 75 | 피크 요소 찾기 | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 76 | 가장 긴 증가 부분 수열 | C++ | O(로그인) | 에) | 중간 | CTCI | |
| 141 | 제곱(x) | C++ | 오(로그인) | 오(1) | 쉬운 | Leet코드 | |
| 159 | 회전 정렬 배열에서 최소값 찾기 | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 160 | 회전 정렬 배열 II에서 최소값 찾기 | C++ | 오(로그인) | 오(1) | 중간 | Leet코드 | |
| 183 | 우드 컷 | C++ | 오(nlogL) | 오(1) | 중간 | | |
| 390 | 피크 요소 II 찾기 | C++ 자바 파이썬 | O(m + n) | 오(1) | 딱딱한 | | |
| 437 | 도서 복사 | C++ | 오(nlogp) | 오(1) | 딱딱한 | UVA 714 | |
너비 우선 검색
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 69 | 이진 트리 수준 순서 탐색 | C++ | 에) | 에) | 중간 | Leet코드 | BFS |
| 70 | 이진 트리 수준 순서 순회 II | C++ | 에) | 에) | 중간 | Leet코드 | BFS |
| 71 | 이진 트리 지그재그 레벨 순서 순회 | C++ | 에) | 에) | 중간 | Leet코드 | BFS |
| 120 | 워드래더 | C++ | 오(n*d) | O(d) | 중간 | Leet코드 | BFS |
| 121 | 단어사다리II | C++ | 오(n*d) | O(d) | 딱딱한 | Leet코드 | BFS, 역추적 |
| 127 | 토폴로지 정렬 | C++ | O(|V|+|E|) | 오(|E|) | 중간 | | DFS, BFS |
| 137 | 그래프 복제 | C++ | O(|V|+|E|) | 오(|V|) | 중간 | | BFS |
| 176 | 그래프의 두 노드 간 라우팅 | C++ | 에) | 에) | 중간 | | DFS, BFS |
| 178 | 그래프 유효 트리 | C++ | O(|V| + |E|) | O(|V| + |E|) | 중간 | Leet코드 | |
| 431 | 무방향 그래프에서 연결된 구성요소 찾기 | C++ | 에) | 에) | 중간 | | BFS |
| 477 | 주변 지역 | C++ | 오(m*n) | O(m + n) | 중간 | Leet코드 | |
깊이 우선 검색
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 90 | K Sum II | C++ | O(k * C(n, k)) | 좋아요) | 중간 | | |
| 376 | 이진 트리 경로 합계 | C++ | 에) | 오) | 쉬운 | Leet코드 | |
| 433 | 섬 수 | C++ | 오(m*n) | 오(m*n) | 쉬운 | Leet코드 | DFS |
| 480 | 이진 트리 경로 | C++ | 오(n*h) | 오) | 쉬운 | Leet코드 | |
역추적
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 15 | 순열 | C++ | 오(n*n!) | 에) | 중간 | Leet코드, EPI | |
| 16 | 순열 II | C++ | 오(n*n!) | 에) | 중간 | Leet코드, EPI | |
| 17 | 하위 집합 | C++ | O(n * 2^n) | 오(1) | 중간 | Leet코드 | |
| 18 | 하위 집합 II | C++ | O(n * 2^n) | 오(1) | 중간 | Leet코드 | |
| 33 | N-퀸즈 | C++ | 오(n*n!) | 에) | 중간 | Leet코드, EPI | |
| 34 | N-퀸즈 II | C++ | 오(n*n!) | 에) | 중간 | Leet코드, EPI | |
| 123 | 단어 검색 | C++ | O(m*n*l) | 오(l) | 중간 | Leet코드 | |
| 132 | 단어 검색 II | C++ | O(m*n*l) | 오(l) | 딱딱한 | | 트라이, DFS |
| 135 | 조합합 | C++ | 오(k * n^k) | 좋아요) | 중간 | Leet코드 | DFS |
| 136 | 회문 파티셔닝 | C++ | 오(2^n) | 에) | 쉬운 | Leet코드, EPI | |
| 152 | 조합 | C++ | 오(k * n^k) | 좋아요) | 중간 | Leet코드, EPI | |
| 153 | 조합합 II | C++ | O(k * C(n, k)) | 좋아요) | 중간 | Leet코드 | DFS |
| 425 | 전화번호의 문자 조합 | C++ | O(n * 4^n) | 에) | 중간 | Leet코드 | |
| 426 | IP 주소 복원 | C++ | 오(1) | 오(1) | 중간 | Leet코드 | |
| 427 | 괄호 생성 | C++ | O(4^n / n^(3/2)) | 에) | 중간 | Leet코드 | |
이진 검색 트리
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 11 | 이진 검색 트리의 검색 범위 | C++ | 에) | 오) | 중간 | 에피 | |
| 86 | 이진 검색 트리 반복자 | C++ | 오(1) | 오) | 딱딱한 | Leet코드 | |
| 87 | 이진 검색 트리에서 노드 제거 | C++ | 오) | 오) | 딱딱한 | | |
| 249 | 자신보다 작은 수의 수 | C++ | O(로그인) | 에) | 딱딱한 | | BST, BIT, 분할 정복, 병합 정렬 |
| 360 | 슬라이딩 윈도우 중앙값 | C++ | 오(nlogw) | 오(w) | 딱딱한 | | BST, 까다롭다 |
| 391 | 하늘을 나는 비행기의 수 | C++ | O(로그인) | 에) | 쉬운 | | BST, 힙 |
| 401 | 정렬된 행렬에서 K번째로 작은 숫자 | C++ | O(klog(최소(m, n, k))) | O(최소(m, n, k)) | 중간 | | BST, 힙 |
동적 프로그래밍
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 20 | 주사위 합계 | C++ | 오(n^2) | 에) | 딱딱한 | | |
| 29 | 문자열 인터리브 | C++ | 오(m*n) | O(최소(m, n)) | 중간 | 에피 | |
| 43 | 최대 하위 배열 III | C++ | 오(k*n) | 오(k*n) | 딱딱한 | | |
| 77 | 가장 긴 공통 부분 수열 | C++ | 오(m*n) | O(최소(m, n)) | 중간 | | |
| 79 | 가장 긴 공통 부분 문자열 | C++ | 오(m*n) | O(최소(m, n)) | 중간 | | |
| 89 | 케이썸 | C++ | O(k * n * t) | O(n*t) | 딱딱한 | | |
| 91 | 최소 조정 비용 | C++ | O(k * n * t) | 좋아요) | 중간 | | |
| 92 | 배낭 | C++ | 오(m*n) | 오(m) | 쉬운 | | |
| 107 | 단어 나누기 | C++ | O(n * l^2) | 에) | 중간 | Leet코드, EPI | |
| 108 | 회문 분할 II | C++ | 오(n^2) | 에) | 중간 | Leet코드, EPI | |
| 109 | 삼각형 | C++ | 에) | 에) | 쉬운 | Leet코드, EPI | |
| 110 | 최소 경로 합계 | C++ | 오(m*n) | O(최소(m, n)) | 쉬운 | Leet코드, EPI | |
| 111 | 계단 오르기 | C++ | 오(로그인) | 오(1) | 쉬운 | Leet코드 | |
| 115 | 독특한 경로 II | C++ | 오(m*n) | O(최소(m, n)) | 쉬운 | LeetCode, CTCI | DP, 수학 |
| 118 | 별개의 하위 시퀀스 | C++ | 오(m*n) | 오(m) | 중간 | Leet코드 | DP |
| 119 | 거리 편집 | C++ | 오(m*n) | O(최소(m, n)) | 중간 | LeetCode, CTCI | DP |
| 125 | 백팩 2 | C++ | 오(m*n) | 오(m) | 중간 | | |
| 149 | 주식을 사고 파는 가장 좋은 시기 | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 150 | 주식을 사고 파는 가장 좋은 시기 II | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 151 | 주식을 사고 파는 가장 좋은 시기 III | C++ | 에) | 오(1) | 중간 | Leet코드, EPI | |
| 154 | 정규식 일치 | C++ | 오(m*n) | 오(m) | 딱딱한 | Leet코드 | DP, 재귀 |
| 168 | 버스트 풍선 | C++ | 오(n^3) | 오(n^2) | 중간 | Leet코드 | |
| 191 | 최대 제품 하위 배열 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 392 | 집 강도 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 393 | 주식을 사고 파는 가장 좋은 시기 IV | C++ | 오(k*n) | 좋아요) | 딱딱한 | Leet코드, EPI | |
| 395 | 라인 II의 동전 | C++ | 에) | 오(1) | 중간 | | |
| 396 | 라인 III의 동전 | C++ | 오(n^2) | 에) | 딱딱한 | | |
| 397 | 가장 긴 증가하는 연속 부분 수열 | C++ | 에) | 오(1) | 쉬운 | | |
| 398 | 가장 긴 증가하는 연속 부분 수열 II | C++ | 오(m*n) | 오(m*n) | 딱딱한 | | |
| 403 | 연속 하위 배열 합계 II | C++ | 에) | 오(1) | 중간 | 에피 | |
| 430 | 스크램블 스트링 | C++ | 오(n^4) | 오(n^3) | 딱딱한 | Leet코드 | |
| 435 | 우체국 문제 | C++ | 오(k * n^2) | 에) | 딱딱한 | PKU 1160 | |
| 436 | 맥시멀 스퀘어 | C++ | 오(m*n) | 에) | 중간 | Leet코드 | |
| 512 | 디코드 방법 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 513 | 완벽한 사각형 | C++ | O(n * sqrt(n)) | 에) | 중간 | Leet코드 | |
| 514 | 페인트 울타리 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 515 | 페인트 하우스 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 516 | 페인트 하우스 II | C++ | 오(n*k) | 좋아요) | 딱딱한 | Leet코드 | |
| 534 | 하우스 강도 II | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 564 | 백팩 VI | C++ | O(n*t) | 오(티) | 중간 | | |
탐욕스러운
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 41 | 최대 하위 배열 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 42 | 최대 하위 배열 II | C++ | 에) | 에) | 중간 | | |
| 44 | 최소 하위 배열 | C++ | 에) | 오(1) | 쉬운 | | |
| 45 | 최대 하위 배열 차이 | C++ | 에) | 에) | 중간 | | |
| 116 | 점프 게임 | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 117 | 점프 게임 II | C++ | 에) | 오(1) | 중간 | Leet코드 | |
| 182 | 숫자 삭제 | C++ | 에) | 에) | 중간 | | |
| 187 | 주유소 | C++ | 에) | 오(1) | 쉬운 | Leet코드 | |
| 192 | 와일드카드 일치 | C++ | O(m + n) | 오(1) | 딱딱한 | Leet코드 | 욕심쟁이, DP, 재귀 |
| 402 | 연속 하위 배열 합계 | C++ | 에) | 오(1) | 중간 | 에피 | |
| 412 | 사탕 | C++ | 에) | 에) | 딱딱한 | Leet코드 | 탐욕스러운 |
| 552 | 최대 개수 생성 | C++ | O(k * (m + n + k)) ~ O(k * (m + n + k^2)) | O(m + n + k^2) | 딱딱한 | Leet코드 | 욕심쟁이, DP |
OO디자인
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 204 | 하나씩 일어나는 것 | C++ | 오(1) | 오(1) | 쉬운 | | |
| 208 | 할당 연산자 오버로딩(C++에만 해당) | C++ | 에) | 오(1) | 중간 | | |
| 496 | 장난감 공장 | C++ | 오(1) | 오(1) | 쉬운 | | |
| 497 | 모양 공장 | C++ | 오(1) | 오(1) | 쉬운 | | |
| 498 | 주차장 | C++ | O(n*m*k) | O(n*m*k) | 딱딱한 | CTCI | OO 디자인, Pimpl Idiom, 스마트 포인터 |
시스템 설계
| # | 제목 | 해결책 | 시간 | 공간 | 어려움 | 꼬리표 | 메모 |
|---|
| 501 | 미니 트위터 | C++ | 오(클로구) | 오(t + f) | 중간 | | |