step 1. 알고리즘 데이터 구조의 각종 상태 적 의미, 선행 조건, 사후 조건 과 부작용 배열 색인, 인용 대상 (링크 노드, 트 리 노드) 이 비어 있 으 면 안 됩 니 다
step 2. 주석 + 일부 코드 의 방식 으로 코드 구 조 를 그 려 서 선행 조건, 사후 조건, 부작용 (각종 상태 변수의 변화) 을 뚜렷하게 표현 한다.방법의 주요 절차 (복잡 한 방법 에 대해 모듈 화 분할)
step 3. 복잡 한 데이터 구조, 예 를 들 어 체인 구조 (링크, 트 리 등) 는 그림 을 통 해 각 수정 노드 의 각 상태 가 정확하게 할당 되 었 는 지 확인 할 수 있다
.
step 4. 특수 상황, 경계 상황 의 처리 에 특히 주의한다. 넘 침, 한 요소 또는 요소 가 없 는 등
step 5. 순환 을 정확하게 작성 하고 세 가지 요소 (초기 화, 순환 조건, 업데이트) 와 순환 불 변수의 유지
step 6. 재 귀 를 정확하게 작성: 시작 조건 (종료 조건), 재 귀 전후 상 태 는 변 하지 않 아야 합 니 다
1. 명확 한 방법의 선행 조건, 선행 조건 과 부작용 을 정의 한다. 1) 선행 조건 - 방법 이 실행 되 기 전에 진실 이 어야 한다.선행 조건 이 만족 하지 않 으 면 방법 을 사용 해 서 는 안 되 고 방법 이 제대로 실 행 될 것 이 라 고 기대 해 서 는 안 된다.(함수 가 그 매개 변수 에 대한 기대 와 / 또는 함수 가 사용 할 수 있 는 대상 의 상 태 를 나타 낸다.)
배열 - 삭제 시 비어 있 으 면 안 됩 니 다
스 택 - pop () 시 비어 있 으 면 안 됩 니 다
대기 열 - 출전 시 대기 열 이 비어 있 으 면 안 됩 니 다
해시 표 - removeNode 삭제 시 비어 있 으 면 안 됩 니 다
배열 과 관련 된 알고리즘, 데이터 구조 - 모두 색인 범위 에 대한 검사
가 필요 합 니 다.
인용 유형 (이 진 트 리 노드, 붉 은 검 은 나무 노드 등) - 도 메 인 을 얻 을 때 비 공 판단
을 해 야 합 니 다.
배열 등 - 사용 전에 초기 화 해 야 합 니 다
2) 백 엔 드 조건 - 백 엔 드 조건 은 서술 어 에서 탈퇴 하 는 기능 을 해 야 한 다 는 것 이다.이것 은 조건 을 표 현 했 습 니 다. 한 함 수 는 반환 값 과 / 또는 함수 에서 사용 할 수 있 는 대상 의 상 태 를 확보 해 야 합 니 다.
배열 유형, 집합 유형 - 삭제 시 해당 하 는 위 치 를 null
로 설정 해 야 합 니 다.
참조 유형, 링크 구조의 노드 유형 - 삭제 시 도 메 인 참조 대상 을 null
로 설정 합 니 다.
배열, 집합 - add remove 시 그 상 태 를 업데이트 해 야 합 니 다. 예 를 들 어 size, count
스 택 - 확장 시 head, tail 상태
를 정확하게 업데이트 해 야 합 니 다.
체인 해시 표 - 확장 시 오래된 표 배열 을 새 표 로 이동 할 때 오래된 표 의 대응 위 치 를 null
로 설정 해 야 합 니 다.
개방 식 해시 표 - 삭제, 이 위치 에 있 는 데 이 터 를 다시 삽입 해 야 합 니 다
BFS 의 가장 짧 은 경로 - marked [w] 업데이트 잊 지 마 세 요
그림 - 테 두 리 를 추가 할 때 E + +
를 잊 지 마 세 요. 2. 상태 변 수 를 명확 하 게 정의 하고 상태 변 수 를 유지 하 는 의 미 는 변 하지 않 습 니 다.
스 택 head - 스 택 꼭대기 요소 tail - 스 택 밑 요소 의 다음 을 가리 키 기 때문에 스 택 에 있 는 요소 범위 [head, tail)
더미 의 명확 한 정 의 는 색인 이 1 로 시작 되 었 고 [1, size] 에 요소
가 존재 합 니 다.
색인 우선 대기 열 은 배열 에 색인 i 를 저장 하 는 동시에 배열 keys 를 통 해 색인 i 를 key 와 연결 시 켜 서 쌓 인 성질 의 비 교 는 key 를 통 해 이 루어 집 니 다 (i 를 통 해 대응 하 는 key 를 가 져 와 야 합 니 다. 이 수치 가 증가 하 는 과정)
3. for 순환, while 순환 처리 순환 문 3 요소:
제어 변수의 초기 화, 당연히 0 partition (int left, int right) 으로 초기 화 하지 말고 순환 변 수 를 left
로 초기 화 합 니 다.
순환 조건
순환 제어 변수의 업데이트
1) 순환 각 변수의 의 미 를 특별히 정의 해 야 한다. 2) 순환 불 변수의 의 미 를 명확 하 게 정의 하고 순환 불 변수 가 순환 에서 항상 성립 되도록 해 야 한다. 특히 순환 내부 에서 배열 색인 과 관련 된 것 을 처리 할 때 범위 검사 3) 제어 변수의 정확 한 업 데 이 트 를 잊 지 말고 관련 변수의 업 데 이 트 를 빠 뜨리 지 않도록 주의해 야 한다.
체인 해시 표 는 while 순환 에 대해 각 변수의 정의 와 세 가지 요 소 를 잘 알 고 size 를 업데이트 하 는 것 을 잊 지 마 세 요. 특히 중요 한 것 은 p 와 node 의 의미 입 니 다. p - (hash, key) 의 전구 결점 입 니 다. 두 가지 상황: 링크 끝 과 링크 중간 에 node - (hash, key) 결점 자체, 두 가지 상황: 링크 끝 (이때 node 는 null) 입 니 다.링크 사이
더미 siftUp sift Down 과 정렬 while 순환 내 에 quue [parent] 가 있 고 순환 외 에 도 색인 right 와 left 가 있 으 며 색인 이 범 위 를 초과 하 는 지 확인 해 야 합 니 다.
rnd > > = 1 을 rnd > > > 1 로 잘못 써 서 순환
변수 업 데 이 트 는 for () 마지막 부분 에 함부로 쓰 지 마 십시오. 빈 포인터 이상
이 발생 할 수 있 습 니 다.
for (Index prev = head; prev != null; prev = prev.down) {
// for , , prev null,
Index right = prev.right;
4. 복잡 한 방법 과 데이터 구조의 처리 방식
체인 데이터 구조 에 대해 먼저 그림 을 그리고 처리 하 는 복잡 도 를 낮 추 는 링크 빨 간 검 은 나무의 left Rotate (), rightRotate () 는 xy 라 는 관 계 를 업데이트 하지 않 았 다
.
복잡 한 조작 에 대해 먼저 생각 을 정리 하고 완전한 조작 절 차 를 작성 한 다음 에 코드 를 쓴 다음 에 최적화 합병 을 한다.
붉 은 검 은 나무 null 결점 의 처리 null 결점 이 작용 합 니 다! 이 처 리 는 parentOf (), left Of (), rightOf (), colorOf ()
를 참고 합 니 다. 5. 재 귀 방법 을 정확하게 작성 한다. 수학 귀납법 참조:
1) 명제 대 자연수 N = 1 (또는 N = 0) 성립
2) 명제 가 N - 1 에 성립 된다 고 가정 하면 명제 도 N 에 성립 된다
.
3) 명 제 는 모든 자연수 에 대해 성립 된다
두 가지 핵심 요소:
1) 시작 조건 (종료 조건)
2) 전달 관계
재 귀적 호출, 상태 유지 보수 주의
private void dfs(int v) {
marked[v] = true;
onStack[v] = true;
for (int w : G.adj(v)) {
if (hasCycle()) {
return;
}
if (!marked[w]) {
edgeTo[w] = v;
dfs(w);
} else if (onStack[w]) {
cycle = new ArrayDeque<>();
cycle.push(w);
for (int u = v; u != w; u = edgeTo[u]) {
cycle.push(u);
}
cycle.push(w);
}
}
// , ,
onStack[v] = false;
}
6. 특수 상황, 경계 처리
배열, 집합 등 - 확장 시 넘 치 는 상황 을 정확하게 처리 하고 확장 크기 가 최소 요구 보다 작 아야 하 는 등 여러 가지 상황
링크 클래스 - 특수 상황 처리 (링크 가 비어 있 고 하나의 요소)
keys WithPrefix () 방법, prefix 자체 처리 잊 음
7. 기타 세부 지식 포인트
정 무한
Arrays.fill(distTo, Double.POSITIVE_INFINITY);
빈 배열
private static final Object[] EMPTY_ELEMENTDATA = {};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: