두 갈래 나무의 모든 경로와 회전 그룹
2171 단어 두 갈래 나무의 모든 경로회전 배열
두 갈래 나무를 정해서 뿌리 노드에서 잎 노드까지의 모든 경로를 되돌려줍니다.
설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다.
예:
입력:
1/\2 3\5
출력: ["1->2->5", "1->3"]
설명: 모든 뿌리 노드에서 잎 노드까지의 경로: 1->2->5, 1->3
class Solution {
public List binaryTreePaths(TreeNode root) {
LinkedList paths = new LinkedList<>();
paths_ans(root,"",paths);
return paths;
}
public void paths_ans(TreeNode root,String path,LinkedList paths){
if(root != null){
path += Integer.toString(root.val);
if(root.left == null && root.right == null){
paths.add(path);
}else{
path += "->";
paths_ans(root.left,path,paths);
paths_ans(root.right,path,paths);
}
}
}
}
문제 풀이 사고방식: 먼저 두 개의 정점을 찾아야 한다. 각각 오른쪽 하단과 왼쪽 상단의 점을 찾은 다음에 이 두 개의 좌표를 종지 조건으로 매 바퀴의 원소를 출력해야 한다. 종지 조건은 이 두 개의 대응하는 가로 좌표이다.
문제 설명은 n행 m열의 표에 대해 우리는 나선형으로 표에 순서대로 정수를 기입할 수 있다. 우리는 기입된 표를 나선형 행렬이라고 부른다.예를 들어 4행 5열의 나선 행렬은 다음과 같다.
샘플 입력
4 52 2
샘플 출력
십오
package Test02;
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
int[][] a = new int[1001][1001];
int n,m;
int c,r;
Scanner reader = new Scanner(System.in);
n = reader.nextInt();
m = reader.nextInt();
c = reader.nextInt();
r = reader.nextInt();
int row = 1, col = 1;
int num = 1;
int n2 = n, m2 = m;
while(row <= n && col <= m){
int x = row, y = col;
while(col <= m)
a[row][col++] = num++;
col--;row++;
while(row <= n)
a[row++][col] = num++;
row--;col--;
while(col >= y)
a[row][col--] = num++;
row--;col++;
while(row > x )
a[row--][col] = num++;
row++;col++;
n--;m--;
}
System.out.println(a[r][c]);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
회전 정렬 배열 검색 II주어진 목표 값 이 배열 에 존재 하 는 지 여 부 를 판단 하기 위해 함 수 를 만 듭 니 다.반환 true 이 존재 하지 않 으 면 반환 false 합 니 다. 이 문 제 는 회전 정렬 배열 을 검색 하 는 확장...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.