【8】机器学习算法面试八股

本文探讨了机器学习面试中的核心算法问题,包括栈溢出的常见情况、红黑树的特性和应用、针对特定场景的高效排序策略,如计数排序,以及堆排序和快速排序的思想。此外,还讲解了TopK问题的多种解决方案,小顶堆的调整过程,以及BFS和DFS的实现原理。同时,介绍了关联规则的Apriori和FP-growth算法的区别,以及贪婪算法的概念。最后,讨论了Python中的生成器、迭代器、is与==的区别,以及dict和list的差异和排序方法,以及C++中static关键字的作用和Python的多进程实现方式。
摘要由CSDN通过智能技术生成

131栈溢出有哪些情况

1)、局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。
2)、递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。
3)指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。

132红黑树

自平衡二叉查找树,用途是实现关联数组。
它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。
set, multiset, map, multimap)应用了红黑树的变体
红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:
性质1. 节点是红色或黑色。
性质2. 根节点是黑色。
性质3 每个叶节点(NIL节点,空节点)是黑色的。
性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长

133对一千万个整数排序,整数范围在[-1000,1000]间,用什么排序最快?

计数排序,计数排序的基本思想为在排序前先统计这组数中其它数小于这个数的个数,其时间复杂度为 ,其中n为整数的个数,k为所有数的范围

134堆排序的思想

将待排序的序列构成一个大顶堆,这个时候整个序列的最大值就是堆顶的根节点,将它与末尾节点进行交换,然后末尾变成了最大值,然后剩余n-1个元素重新构成一个堆,这样得到这n个元素的次大值,反复进行以上操作便得到一个有序序列。

135快速排序的最优情况

链接
快速排序(Quick Sort)使用分治法策略。
它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序流程:
(1) 从数列中挑出一个基准值。
(2) 将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(相同的数可以到任一边);在这个分区退出之后,该基准就处于数列的中间位置。
(3) 递归地把"基准值前面的子数列"和"基准值后面的子数列"进行排序。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT与Fintech

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值