Java ACM模式常用模版

Java ACM 模式常用模版

导包

1
2
import java.io.*;
import java.util.*;

输入输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int[] arr1 = new int[n];
for(int i = 0; i < n; i ++) {
arr1[i] = sc.nextInt();
}

// 读取一行数据,按照空格分割成整数数组
String[] nums = sc.nextLine().split(" ");
int[] arr2 = new int[nums.length];
for(int i = 0; i < nums.length; i ++) {
arr2[i] = Integer.parseInt(nums[i]);
}

// 调用解决方案
int result = solution(arr1);

// 输出结果
System.out.println(result);
}

public static int solution(int[] nums) {
// Todo
return 0;
}
}

链表节点定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 单向链表
class ListNode {
int val;
ListNode next;

ListNode(){}
ListNode(int val) {
this.val = val
}
ListNode(int val, ListNode node) {
this.val = val;
this.next = node;
}
}

// 双向链表
class DoubleListNode {
int val;
ListNode pre;
ListNode next;

DoubleListNode(){}
DoubleListNode(int val) {
this.val = val;
}
DoubleListNode(int val, DoubleListNode pre, DoubleListNode next) {
this.val = val;
this.pre = pre;
this.next = next;
}
}

创建链表

1
2
3
4
5
6
7
8
9
10
11
12
public static ListNode createLinkedList(int[] arr) {
if (arr == null || arr.length == 0) {
return null;
}
ListNode head = new ListNode(arr[0]);
ListNode current = head;
for (int i = 1; i < arr.length; i++) {
current.next = new ListNode(arr[i]);
current = current.next;
}
return head;
}

二叉树节点定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode() {}
TreeNode(int val) {
this.val = val;
}

TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}

创建二叉树,根据层序遍历建树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static TreeNode createTree(Integer[] arr) {
if(arr == null || arr.length == 0) {
return null;
}
TreeNode root = new TreeNode(arr[0]);
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);

int i = 1;
while(i < arr.length) {
TreeNode cur = queue.poll();
// 添加左子树
if(i < arr.length && arr[i] != null) {
cur.left = new TreeNode(arr[i]);
queue.add(cur.left);
}
i ++;
// 添加右子树
if(i < arr.length && arr[i] != null) {
cur.right = new TreeNode(arr[i]);
queue.add(cur.right);
}
i ++;
}
return root;
}

Java ACM模式常用模版
https://sowink.cn/2026/03/30/Java-ACM模式常用模版/
作者
Xurx
发布于
2026年3月30日
许可协议