반전 체인 테이블과 그룹 반전 체인 테이블
2903 단어 interview
1. 체인 시계 반전
고전적인 반전 체인 시계, 먼저 코드
public class ListNode {
int data;
ListNode next;
public ListNode(int data) {
this.data = data;
}
}
public class PrintList {
public static void print(ListNode root) {
while (root != null) {
System.out.print(root.data + " ");
root = root.next;
}
System.out.println();
}
}
public class Reverse {
public ListNode init() {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(2);
ListNode n3 = new ListNode(3);
n1.next = n2;
n2.next = n3;
return n1;
}
public ListNode reverse(ListNode root) {
if (root == null || root.next == null) {
return root;
}
ListNode pre = null, cur = root;
while (cur != null) {
ListNode tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
public static void main(String[] args) {
Reverse obj = new Reverse();
ListNode root = obj.init();
ListNode result = obj.reverse(root);
PrintList.print(result);
}
}
주요 단계는 다음과 같습니다.현재 노드의next 노드를 tmp 노드로 저장합니다.2. 현재 노드의next 노드를pre 노드로 설정합니다(반전 실현).3. pre 노드를 현재 노드로 설정합니다.4. 현재 노드를 첫 번째 단계로 저장하는 tmp 노드로 설정합니다.
2. 그룹 반전 체인 테이블
하나의 체인 테이블을 정하고 각 k개의 노드가 한 조로 반전시킨다. k는 정정수이고 그 값은 체인 테이블의 길이보다 작거나 같다.만약 노드의 총수가 k의 정수배가 되지 않는다면, 마지막 남은 노드는 원래의 순서를 유지할 것이다.
예를 들어 체인 테이블이 1->2->3->4->5k=2일 경우, 반전 후의 결과는 2->1->4->3->5k=3일 경우, 반전 후의 결과는 3->2->1->4->5
문제 풀이의 사고방식은 다음과 같이 추상화할 수 있다.루트로 시작하는 k 요소를 먼저 반전합니다.2. 제k+1개의 요소를head귀속으로reverseKGroup 함수(즉 반전 함수)를 호출한다.위 두 과정의 결과를 연결하다.
public class ReverseKs {
public ListNode init() {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(2);
ListNode n3 = new ListNode(3);
ListNode n4 = new ListNode(4);
ListNode n5 = new ListNode(5);
n1.next = n2;
n2.next = n3;
n3.next = n4;
n4.next = n5;
return n1;
}
public ListNode reverse(ListNode a, ListNode b) {
ListNode pre = null, cur = a;
while (cur != b) {
ListNode tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
public ListNode reverseKGroup(ListNode root, int k) {
if (root == null) return null;
ListNode a = root, b = root;
for(int i=0; i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
알고리즘 1000 개 노크 #2. Longest common substringsProblem Solution DP (다이나믹 프로그래밍) 중에서 고전적인 문제입니다. 두 문자열을 S1과 S2, 각각의 길이를 M, N으로 설정합니다. 총당으로 S1에서 모든 부분 문자열을 추출하고, 그것들이 S2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.