在做一道图相关的题目时,使用了数组模拟链表,进行邻接表存储图的形式,代码如下:
let h = [], e = [], ne = [], idx = 0
这段代码习惯性地声明在了全局变量中。
这个代码基本逻辑是比较熟悉的,按理说根据曾经做过的方法照样写就不会错的,但是却始终无法通过全部用例。
最后把这段数组的声明提取到入口函数中,发现直接执行通过了。
搜索了一下,才发现 LeetCode 提交代码时,代码中的全局变量有时可能无法完成初始化,仍保留上次的值。才想起来之前就看过类似的说法,这次算是亲自体验了一把。
所以要么不使用全局变量,要么在执行的入口函数中再次初始化所有的全局变量。
有时候使用了全局变量,因业务逻辑没有报错,但是因为未初始化,使动态数组变可能得很大,也会极大影响执行效率。