波波老师,请问这个return提前为什么会快这么多呢

来源:6-5 BFS和图的最短路径 Perfect Squares

夜的钢琴曲5

2019-10-24

就是最后一种优化方法中把
if(num == 0)
return step;
去掉,然后在循环中加入
if (a == 0)
return step+1;
就会从60ms快到17ms呢,这个判断放在for循环外面比放在里面应该只少了一次的判断,但为什么会快这么多呢,请问这背后是什么原理。

写回答

1回答

liuyubobobo

2019-10-25

因为判断 if(a == 0) ,是在第一次见到目标的时候就返回了;


但是,判断 if(num == 0),其实是第二次见到目标的时候,第一次见到目标,先将它放入队列了;第二次取出来的时候,发现它是 0,返回。


在第一次见到它,把它放入队列以后,我们还可能需要从队列中取出很多元素去做判断,然后才轮到第二次将它从队列中取出来。


继续加油!:)

0
1
夜的钢琴曲5
谢谢波波老师
2019-10-25
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程