我收集的一些大厂面试题,我认为比较有价值的。
解法:排序+二分
先将这n个士兵按照身高从小到大进行排序,每一排的人数最少一个最多n/k个,我们就通过这个进行二分查找,还需要写一个函数来判断是否满足要求。这个二分只有两个分支,与从0-n(有序)中找到缺失的数字这个题一样。
注意核酸检测是批量检测,现在可以用二分的方式来做,比如先检测一半的人数,通过这种方式来判断是在左区间还是右区间。
集五福问题,问集齐五福平均需要收集多少张卡片。
给定一个三角形如何生成一个点,让这个点在三角形内的概率相同,并且尽可能让这个点在三角形的概率大。
- 在一个先升序后降序的数组中,找出其中的最大值。
import sys
def search(nums):
l = 0
r = len(nums) - 1
while(l < r): #注意这里
mid = (l + r) // 2
if nums[mid] > nums[mid+1]:
r = mid
elif nums[mid] == nums[mid+1]:
if nums[l] < nums[r]: #需要考虑重复值来进行收缩
l += 1
else:
r -= 1
else:
l = mid + 1
return nums[l]
if __name__ == '__main__':
test = [1, 2, 2, 2, 2, 3, 1]
test1 = [1, 3, 2, 2, 2, 2, 1]
print(search(test))
从N个数中等概率抽取M个数。
参考:https://blog.csdn.net/bitcarmanlee/article/details/83016377-
参考:https://blog.csdn.net/xushiyu1996818/article/details/84936832 在内存有限的情况下,统计整个语料库文本的词频。
sklearn中如何对特征进行多项式扩充。
这个问题本质上是一个求多项式不重复的项有多少个,可以列递方程来解决。