为啥要刷leetcode?
数据结构表征数据存储的格式及操作数据的方式,了解这些便于我们大数据开发人员设计更好的存储,读取,计算策略。所以在java基础,大数据基础,大数据框架源码等都有一定基础之后应该去追求写出更加精致高效的代码。
最近,在整理java面试题,发现很多java底层,redis的有序set等存储结构,spark ,mr等等等我们常用的工具常见的框架都用到了数据结构与算法。所以,要想彻底搞明白底层原理,编写处时间复杂度比较低的代码,还是要去刷一下数据结构,况且数据结构貌似是bat 数据技术类必须面试的门槛,当然你做平台开发最好也会,不要以为用不到就不去学,只是你还比较菜。
再回到为啥要刷一下leetcode?
老外都在刷,大学生也在刷,自己不刷刷,大数据搞的再好有毛用,也只是底层开发。
此处,应该吐血。。。
于是乎,今天leetcode破处了,第一个题是以前没搞明白的一个题。题目如下:
Given a linked list, determine if it has a cycle in it.
就是给定一个链表如何判断其中有环。leetcode给出的命题及案例如下:
第一次是毕业的时候面试被问到这个题,一脸懵逼,这不刷题谁会?
最近细思大致思路有三:
ListNode walker = head;
ListNode runner = head;
while(runner!=null&&runner.next!=null){
walker = walker.next;
runner = runner.next.next;
if(walker == runner){
return true;
}
}
return false;
其实,理解思路的话代码实现是很简单。
做出来了是容易,那么可以来个四连问:
下次分析。。。