Skip to content

Latest commit

 

History

History
47 lines (26 loc) · 2.27 KB

levelH3.md

File metadata and controls

47 lines (26 loc) · 2.27 KB

3年经验PHP算法思路总结

2、写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P点

Q:是否有环 A:使用快慢指针,如果快指针能和慢指针相遇则有环

Q:找出P点 A:使用相遇的点和头结点同时移动,相遇则是P点

3、从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是连续的

主要是考虑大小王的问题,我们可以把大小王当做0,数组排序后

  • 没有王,最大和最小值差4
  • 1张王,最大和最小值差4或者3
  • 2张王,最大和最小值差4或者3或者2

4、两条相交的单向链表,如何求它们的第一个公共节点

5、最长公共子序列问题LCS,如有[1,2,5,11,32,15,77]和[99,32,15,5,1,77]两个数组,找到它们共同都拥有的数,写出时间复杂度最优的代码,不能用array_intersect

6、二叉树前中后遍历代码

7、写个函数,判断下面扩号是否闭合,左右对称即为闭合: ((())),)(()),(()))),(((((()),(()()),()()

利用栈,左括号入栈,右括号出栈,如果出栈失败则不是闭合的

8、找出数组中不重复的值[1,2,3,3,2,1,5]

9、10瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,会在24小时后死亡,问:最少用几只小白鼠可以在24小时后找到具体是哪一瓶水有毒

二进制表示法,小白鼠死和活可以当做1和0,10的二进制是00001010,所以最少需要4只小白鼠

10、写一个一个程序来查找最长子串

11、什么是B+树,请画b+树的结构

12、写一段代码,找到所有子集合,如[a,b,c]的子集合有{},{a},{b},{c},{ab},{ac},{abc}

13、一个排序好的数组,将它从中间任意一个位置切分成两个数组,然后交换它们的位置并合并,合并后新数组元素如:20,21,22,25,30,1,2,3,5,6,7,8,15,18,19,写一个查询函数来查找某个值是否存在

14、斗地主中,地主比农民得到王炸的概率多多少

15、有这样一个字符串abcdefgkbcdefab随机长度,写一个函数来求bcde在这个字符串中出现的次数

16、在一个坐标系内有一个N个点组成的多边形,现在有一个坐标点,写代码或思路来判断这个点是否处于多边形内