赞
踩
原标题:想去面试?这10道最高频的手撕代码题都会了吗?
来源:Python与算法之美
ID:Python_Ai_Road
作者:梁云1991
想去看机会?下面这10道最高频的手撕代码面试题都会了吗?
相信我,彻底掌握以下这10道题的解法,你顺利做出手撕代码面试题目的概率至少不低于50%。
1,快速排序
题目形式:手写一下快速排序算法。
题目难度:中等。
出现概率:约50%。手写快排绝对是手撕代码面试题中的百兽之王,掌握了它就是送分题,没有掌握它就是送命题。
参考代码:
defquick_sort(arr,start=0,end=None):
ifend isNone:
end = len(arr) -1
ifend<=start:
return(arr)
i,j = start,end
ref = arr[start]
whilej>i:
ifarr[j]>= ref:
j = j - 1
else:
# 此处使用一行语句交换3个元素的值
arr[i],arr[j ],arr[i+1] = arr[j],arr[i+1],arr[i ]
i = i + 1
quick_sort(arr,start=start,end = i -1)
quick_sort(arr,start=i+ 1,end = end)
print(quick_sort([ 1, 1, 3, 3, 2, 2, 6, 6, 6, 5, 5, 7]))
输出结果:
[1, 1, 2, 2, 2, 3, 5, 5, 6, 6, 6, 7]
2,二分查找
题目形式:手写一下二分查找算法。给定一个有序数组 arr 和一个目标元素 target ,返回该 target 在 arr 中的索引,若不存在,返回-1。
题目难度:简单。
出现概率:约30%。二分查找绝对是手写代码题中的百兽之后,没有妃子可以和她争宠。连个二分查找都写不出来,还来应聘程序员,你是不是对程序员这个职业有什么误解?
defbinary_search(arr,target):
start,end = 0,len(arr) -1
whileTrue:
ifend - start <= 1:
iftarget == arr[start]:
return(start)
eliftarget == arr[end]:</