距离上次更新博客又有一个月了,最近这一个月还是在忙着找实习与秋招提前批。从2月底到6月中旬,差不多折腾了4个月,这中间经历了不少心酸,今年的算法(尤其是CV)真的是神仙打架。最后所幸还可以,拿到了两个机器学习的实习offer,分别是滴滴出行的数据算法实习生和哈啰出行的机器学习算法实习生。下面这几篇博文我将总结面试中常考的算法题,今天是第一篇!
无序数组中的第k大的元素
在未排序的数组中找到第k
个最大的元素。请注意,你需要找的是数组排序后的第 k
个最大的元素,而不是第k
个不同的元素。
1 | 示例 1: |
解题思路
类似快排的划分思路
先任取一个数,把比它大的数移动到它的左边,比它小的数移动到它的右边。移动完成一轮后,看该数的下标(从0
计数),如果刚好为k-1
则它就是第k
大的数,如果小于k-1
,说明第k
大的数在它右边,如果大于k-1
则说明第k
大的数在它左边,取左边或者右边继续进行移动,直到找到。
Python代码
1 | class Solution: |