영어 | 简体中文
알고리즘과 데이터 구조
이것은 솔루션이 포함된 알고리즘, 데이터 구조 및 인터뷰 질문 모음입니다. 이 저장소에는 일반적인 알고리즘 문제와 Java의 데이터 구조 구현에 대한 솔루션이 포함되어 있습니다. 저는 알고리즘을 배우기 위해 이 저장소를 만들었습니다. 지속적으로 솔루션을 추가하고 있습니다.
지금까지 알고리즘, 데이터 구조 및 300개 이상의 문제와 솔루션이 제공되었습니다.
질문
다음은 난이도별로 분류된 질문입니다.
- 쉬운 질문과 답변
- 중간 질문과 답변
- 어려운 질문과 답변
문제:
배열
- 배열 회전
- 중복된 내용이 포함되어 있습니다.
- 피크 요소 찾기
- 최대 하위 배열
- 배열에서 K번째로 큰 요소
- 배열에서 모든 중복 찾기
- 가장 긴 증가 부분 수열
- 이미지 회전, 매트릭스
- 배열 섞기
- 회전된 배열에서 최소값 찾기
- 회전된 배열에서 검색
연결리스트
- 단일 연결 목록 구현
- 이중 연결 목록 구현
- 연결리스트에서 노드 삭제
- 회문 연결리스트
- 역방향 연결리스트
- 두 연결리스트의 교차점
- 연결리스트 사이클
- 목록 끝에서 N번째 노드 제거
- 병합 정렬 목록
- 연결리스트 주기 찾기
- k개의 정렬된 목록 병합
그리고 다른 많은 연결 목록 문제
이진 트리
- 이진 트리 수준 순서 탐색
- 왼쪽 잎의 합
- 이진 트리 반전
- 이진 검색 트리 반복자
- 이진 트리 후위 순회
- 이진 트리 선주문 순회
- 이진 트리를 연결 목록으로 평면화
- 대칭 트리
- 이진 트리 중위순회
- 같은 나무
- 이진 트리의 최대 깊이
- 균형 잡힌 이진 트리
- 이진 트리의 최소 깊이
- 균형 이진 검색 트리로 정렬된 목록
- 이진 검색 트리 검증
- 균형 잡힌 BST로 정렬된 목록
- BST의 K번째로 작은 요소
- 이진 트리 지그재그 레벨 순서 순회
- BST에서 노드 삭제
- BST의 최하위 공통 조상
- 이진 트리 왼쪽 보기
- 이진 트리 오른쪽 보기
- BST 모드
- 가장 빈번한 하위 트리 합계
- 각 행에서 가장 큰 요소 찾기
- BT 직렬화 및 역직렬화
그리고 다른 많은 나무 문제들
수학
- 정수 나누기
- 역방향 비트
- 회문 번호
- Math.pow
- 주전자와 물 문제
- 에라토스테네스의 체
- 페르마의 소수
- 역폴란드 표기법 평가
스택 및 큐
- 최소 스택
- 최소 대기열
- 대기열을 사용하여 스택 구현
- 스택을 사용하여 대기열 구현
- 스택 정렬
동적 프로그래밍
- 피보나치 수열
- 단어 나누기
- 하위 집합 합계
- 0/1 배낭 문제
- 가장 짧은 회문(KMP)
- 최소 제곱합
- 문자열의 최대 가중치 변환
- 코인 변경
기타
- 유니온 찾기
- 순열
- 하위 집합
알고리즘
정렬 및 검색
- 버블정렬
- 삽입 정렬
- 선택 정렬
- 계산 정렬
- 이진 검색, 하한 및 상한
- 병합정렬
- 퀵정렬
그래프
- 너비 우선 검색(BFS)
- 깊이 우선 검색(DFS)
- Prim의 최소 스패닝 트리(MST)
- KrusKal의 최소 스패닝 트리(MST)
- 토폴로지 정렬
- 최단 경로 데이스크트라
- 최단 경로 벨만-포드
- A* 경험적 경로 찾기
- 그래프가 이분형인가요?
- 그래프가 연결되어 있습니까?
- 사이클 감지
- 무방향 그래프 브리지 감지
끈
- 라빈 카프(Rabin Karp) 하위순서 검색
- 랜섬노트
- 역방향 문자열
- 가장 긴 공통 접두사
- 철자 바꾸기
- 바늘과 건초더미
- 단어 나누기
- 메타 문자열
데이터 구조:
나무
- 이진 검색 트리(재귀)
- 이진 검색 트리(반복)
- AVL 트리
- Trie(접두사 트리)
- 해시된 배열 트리
- LRU 캐시
기여하다
버그를 찾으셨나요? 더 잘할 수 있는 방법이 있나요? 자유롭게 풀 요청해 주세요. :)