背 景
最近要面试几个java&数据开发同学,稍稍准备几个题目
问 题
笔试题
1)伪代码实现:判断单链表是否有环 ;
2 ) 现有一张包括员工姓名、薪水、省份、城市、年龄、职位等字段在内的员工信息表; 请写 sql 查出:每个城市中薪水高于 2w 的所有员工信息 以及 该城市高于2w对应的员工人数?
说明:正确的查询结果集中可能有如下的记录 :
张三、3w、广东省、惠州市、30、java高工、100(注:假设薪水大于2w的员工中,有100名来自惠州)
李四、2.5w、广东省、惠州市、31、java高工、100
… …
算法原理
a. 操场上有两个人在跑步,同一起点:如果操场是圆的,跑的快的同学( faster ),肯定可以超越并再次追赶上跑的慢的同学( slower ),or 如果操场是直线的,跑的慢的同学,永远在后面
b. faster 和slower 相遇,链表有环,此时将slower移回头结点位置; 让faster和 slower 每次都走一步; 再次相遇,此时 slower 和 faster 所指向的位置即是环的入口
public class Solution
{
public ListNode detectCycle(ListNode head)
{
ListNode fast = head;
ListNode slow = head;
while(fast != null && fast.next != null)