Skip to content

Commit c7d8828

Browse files
JavaScalaDeveloperJavaScalaDeveloper
authored andcommitted
添加所有class的包名
1 parent 9feca27 commit c7d8828

File tree

7 files changed

+291
-0
lines changed

7 files changed

+291
-0
lines changed

change/datastructure/ListNode.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package change.datastructure;
2+
3+
4+
/**
5+
* 链表
6+
*/
7+
public class ListNode {
8+
public int val;
9+
public ListNode next = null;
10+
11+
public ListNode(int val) {
12+
this.val = val;
13+
}
14+
15+
public ListNode() {
16+
}
17+
18+
public ListNode(int val, ListNode next) {
19+
this.val = val;
20+
this.next = next;
21+
}
22+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package change.datastructure;
2+
3+
/**
4+
* 这个实体类包含了二叉树节点的value、左子节点、右子节点和指向父节点的指针。可以根据需求进行修改和扩展。
5+
*
6+
* 需要注意的是,在构造函数中,我们默认将左子节点、右子节点和父节点初始化为null,因为有些二叉树节点并不一定拥有左右子节点和父节点,这样当节点不存在时,这些变量就能够保证为null。
7+
*/
8+
//@Data
9+
public class TreeLinkNode extends TreeNode{
10+
//指向父亲结点的指针
11+
public TreeLinkNode parent = null;
12+
13+
public TreeLinkNode() {
14+
}
15+
16+
public TreeLinkNode(int val) {
17+
this.val = val;
18+
}
19+
20+
public TreeLinkNode(int val, TreeNode left, TreeNode right, TreeLinkNode parent) {
21+
super(val, left, right);
22+
this.parent = parent;
23+
}
24+
25+
public TreeLinkNode(int val, TreeLinkNode left, TreeLinkNode right, TreeLinkNode parent) {
26+
this.val = val;
27+
this.left = left;
28+
this.right = right;
29+
this.parent = parent;
30+
}
31+
}

change/datastructure/TreeNode.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package change.datastructure;
2+
3+
/**
4+
* 二叉树
5+
*/
6+
//@Data
7+
public class TreeNode {
8+
public int val;
9+
public TreeNode left = null;
10+
public TreeNode right = null;
11+
12+
public TreeNode(int val, TreeNode left, TreeNode right) {
13+
this.val = val;
14+
this.left = left;
15+
this.right = right;
16+
}
17+
18+
public TreeNode(int val) {
19+
this.val = val;
20+
}
21+
22+
public TreeNode() {
23+
}
24+
}

change/scripts/AddPackagePrefix.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package change.scripts;
2+
import java.io.*;
3+
import java.nio.charset.StandardCharsets;
4+
5+
public class AddPackagePrefix {
6+
static final String pathName = "D:\\WorkSpaces\\leetcode-all\\solution\\0000-0099";
7+
8+
9+
public static void main(String[] args) {
10+
// 获取当前目录名
11+
File currentDir = new File(pathName);
12+
String dirName = currentDir.getName();
13+
// 定义要添加的包名
14+
String packageName = "com.solution." + dirName;
15+
// 获取目录下的所有 .java 文件并修改其中的包名
16+
modifyPackagePrefix(new File(pathName), packageName);
17+
}
18+
19+
/**
20+
* 遍历目录下的所有指定文件类型,并修改代码中的包名前缀
21+
*
22+
* @param directory 目录
23+
* @param packageName 要添加的包名前缀
24+
*/
25+
public static void modifyPackagePrefix(File directory, String packageName) {
26+
if (directory.isDirectory()) {
27+
// 获取目录下的所有文件和子目录
28+
File[] files = directory.listFiles();
29+
if (files != null) {
30+
for (File file : files) {
31+
if (file.isDirectory()) {
32+
// 如果是子目录,则递归调用 modifyPackagePrefix 方法
33+
modifyPackagePrefix(file, packageName + "." + file.getName());
34+
} else if (file.getName().endsWith(".java")) {
35+
// 如果是 .java 文件,则修改其中的包名前缀
36+
modifyJavaFilePackage(file, packageName);
37+
}
38+
}
39+
}
40+
}
41+
}
42+
43+
/**
44+
* 修改 Java 文件中的包名前缀
45+
*
46+
* @param javaFile Java 文件
47+
* @param packageName 包名前缀
48+
*/
49+
public static void modifyJavaFilePackage(File javaFile, String packageName) {
50+
StringBuilder stringBuilder = new StringBuilder();
51+
BufferedReader bufferedReader = null;
52+
BufferedWriter bufferedWriter = null;
53+
try {
54+
// 读取文件内容
55+
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), StandardCharsets.UTF_8));
56+
String line;
57+
while ((line = bufferedReader.readLine()) != null) {
58+
// 如果文件内容中没有 package 语句,则添加新的包名
59+
if (line.startsWith("package ")) {
60+
line = "package " + packageName + ";";
61+
}
62+
stringBuilder.append(line).append('\n');
63+
}
64+
// 写入文件内容
65+
bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(javaFile), StandardCharsets.UTF_8));
66+
bufferedWriter.write(stringBuilder.toString());
67+
} catch (IOException e) {
68+
e.printStackTrace();
69+
} finally {
70+
try {
71+
if (bufferedReader != null) {
72+
bufferedReader.close();
73+
}
74+
if (bufferedWriter != null) {
75+
bufferedWriter.close();
76+
}
77+
} catch (IOException e) {
78+
e.printStackTrace();
79+
}
80+
}
81+
}
82+
}

change/tools/listnode/ArrayUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package change.tools.listnode;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class ArrayUtils {
7+
public static List<Integer> toList(int[] arr) {
8+
List<Integer> list = new ArrayList<>();
9+
for (int j : arr) {
10+
list.add(j);
11+
}
12+
return list;
13+
}
14+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package change.tools.listnode;
2+
3+
4+
import change.datastructure.*;
5+
import java.util.*;
6+
7+
/**
8+
* 链表工具类
9+
*/
10+
public class ListNodeUtils {
11+
public static void main(String[] args) {
12+
ListNode listNode = new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, null))));
13+
List<Integer> values = ListNodeUtils.getValues(listNode);
14+
System.out.println(values);
15+
16+
17+
// 构造链表
18+
ListNode head = new ListNode(1, null);
19+
ListNode medium = new ListNode(4, new ListNode(5, head));
20+
ListNode tail = new ListNode(2, new ListNode(3, medium));
21+
head.next = medium;
22+
List<Integer> circularList = ListNodeUtils.getCircularList(tail);
23+
System.out.println(circularList);
24+
}
25+
26+
public static List<Integer> getValues(ListNode listNode) {
27+
List<Integer> list = new ArrayList<>();
28+
if (listNode == null) {
29+
return list;
30+
}
31+
list.add(listNode.val);
32+
while (listNode.next != null) {
33+
listNode = listNode.next;
34+
list.add(listNode.val);
35+
}
36+
return list;
37+
}
38+
39+
/**
40+
* 获取环状链表的值
41+
*
42+
* @param head 环状链表
43+
* @return 值
44+
*/
45+
public static List<Integer> getCircularList(ListNode head) {
46+
List<Integer> list = new ArrayList<>();
47+
ListNode slow = head;
48+
ListNode fast = head;
49+
boolean hasCycle = false;
50+
//快慢指针遍历链表,判断是否存在环
51+
while (fast != null && fast.next != null) {
52+
fast = fast.next.next;
53+
slow = slow.next;
54+
if (slow == fast) {
55+
//相遇点,存在环
56+
hasCycle = true;
57+
break;
58+
}
59+
}
60+
if (hasCycle) {
61+
//慢指针从相遇点继续往前走一圈回到相遇点
62+
slow = head;
63+
while (slow != fast) {
64+
list.add(slow.val);
65+
slow = slow.next;
66+
fast = fast.next;
67+
}
68+
//输出环入口和后续结点
69+
list.add(fast.val);
70+
}
71+
return list;
72+
}
73+
74+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package change.tools.listnode;
2+
3+
import change.datastructure.TreeNode;
4+
5+
public class TreeNodeUtils {
6+
public static void printTree(TreeNode root) {
7+
printNode(root, "", false);
8+
}
9+
10+
private static void printNode(TreeNode node, String prefix, boolean isLeft) {
11+
if (node == null) {
12+
return;
13+
}
14+
System.out.println(prefix + (isLeft ? "├──" : "└──") + node.val);
15+
printNode(node.left, prefix + (isLeft ? "│ " : " "), true);
16+
printNode(node.right, prefix + (isLeft ? "│ " : " "), false);
17+
}
18+
19+
/*
20+
构建一个二叉树
21+
@return TreeNode
22+
1
23+
/ \
24+
2 3
25+
/ \ / \
26+
4 5 6 7
27+
*/
28+
public static TreeNode buildTree() {
29+
TreeNode root = new TreeNode(1);
30+
root.left = new TreeNode(2);
31+
root.right = new TreeNode(3);
32+
// root.left.parent = root;
33+
// root.right.parent = root;
34+
root.left.left = new TreeNode(4);
35+
root.left.right = new TreeNode(5);
36+
// root.left.left.parent = root.left;
37+
// root.left.right.parent = root.left;
38+
root.right.left = new TreeNode(6);
39+
root.right.right = new TreeNode(7);
40+
// root.right.left.parent = root.right;
41+
// root.right.right.parent = root.right;
42+
return root;
43+
}
44+
}

0 commit comments

Comments
 (0)