20251224_LeetCode static静态对象导致的结果错误问题解析

​ 今天在编写力扣题目:298. 二叉树最长连续序列时,我要使用一个类中缓存的max数值对象,我最开始使用的static静态常量类型

​ 题目本身很简单,我写完发现总是有问题,检查了好多变,我可以确定逻辑准确无误;最后我查看了官方解答的代码,发现了其中的差异点,我的代码使用

1
2
static int max = 0;// 我的代码
private int max = 0;// 官方使用

​ 我将代码修改为非static就正常AC了,同时我也在网上查找了相关资料,发现原因:

1
2
3
4
LeetCode 执行测试用例时,并非为每个用例重新加载类,而是:
加载一次你的解题类(如 Solution);
复用该类的同一个类加载器,甚至复用同一个实例(或创建多个实例,但 static 变量仍共享);
依次执行多个测试用例(如测试用例 1:[1,null,3,2,4,null,null,null,5];测试用例 2:[2,null,3,2,null,1])。