Leetcode与本地结果不一致问题解决及分析

Leetcode与本地结果不一致问题解决及分析

本问题仅限于Java,其它语言可以根据此思路自行排查

问题起因

​ 一道dfs题目,因为C语言的习惯,做这种题我会设置一堆全局变量,所以Java中就设置了比较多的static变量(虽然没有必要)。最终交题后,给出的错误样例在本地确实正确的结果。

​ 搜了一下,最后将static变量全部换成实例变量就过了。第二次碰见这种情况了比较恼火,随意决定弄清为什么。

测试

​ 因为这道题涉及到的变量比较多,不能一下子看出来是哪个变量除了问题,就一直把某些变量设成static,某些设成成员变量去试。最终把问题锁定到了两个累加的变量上(成员变量),此时其他变量均为static修饰,这两个累加变量任何一个设置为static将导致结果不一致。

​ 最后猜测是因为leetcode去测用例的时候,只加载了一次Solution类,这俩个累加变量在每组样例的测试中没有清零,导致结果不一样。最后将这两个变量设置static,手动在方法开头清零,最终通过。猜想基本正确。

总结

​ 在leetcode上的做题习惯跟别的oj有很大不同,基本不会涉及到多组输入清零问题,所以慎用static变量即可避免此问题。

你可能感兴趣的:(Leetcode与本地结果不一致问题解决及分析)