前言:
写算法也写了十来天了,都是数组类的。今天完成了一个课题,觉得需要总结下。今天突然很遗憾的发现,自己之前写过的算法,现在自己回想起来,也不知道怎么解决。
温故而知新。决定,今天就不写算法题了,决定思考总结下之前的算法题。
移动零:
这个人的思路真的是很厉害。我尝试问自己,这个人是怎么样想的?我去按照他的思路去思考问题。
常规思路:遇到非零的,不变。遇到0,把他移动到最后。这个移动到最后,写法又是一个循环。
仔细想想,这种思路就不可取。除非万不得已,因为实现起来,太复杂了。而且,也不会最优秀的算法。
网上最快的思路,怎么说呢,大致思路是,两个指针,一个指向当前遍历的,一个是指向当前是0的位置,等待交换。交换完之后,j++; 指向0的位置的变量j++. 为什么j++ 就一定还是0 呢? 因为从j 到 i 这个区间,都是0 。如果当前不是0的话,那么i 和 j 都 ++;
说实话,那个网上写法最简答, 而且算法效率最高的人的思路,我现在还是不明白,他是怎么想出来的。
总结:
- 虽然有些情况,自己还是不是很确定自己完全掌握了别人的思维。但是,90%的题,我都了解了。对自己的面试肯定有帮助。
- 学习总是有用的。
- 加油。