想去看机会?这10道最高频的手撕代码题都会了吗?

您所在的位置:网站首页 小米线上测试答案 想去看机会?这10道最高频的手撕代码题都会了吗?

想去看机会?这10道最高频的手撕代码题都会了吗?

2024-01-20 06:26| 来源: 网络整理| 查看: 265

想去看机会?下面这10道最高频的手撕代码面试题都会了吗?

相信我,彻底掌握以下这10道题的解法,你顺利做出手撕代码面试题目的概率至少不低于50%。

1,快速排序

题目形式:手写一下快速排序算法。

题目难度:中等。

出现概率:约50%。手写快排绝对是手撕代码面试题中的百兽之王,掌握了它就是送分题,没有掌握它就是送命题。

参考代码:

def quick_sort(arr,start=0,end=None): if end is None: end = len(arr)-1 if endi: if arr[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) return(arr) 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%。二分查找绝对是手写代码题中的百兽之后,没有妃子可以和她争宠。连个二分查找都写不出来,还来应聘程序员,你是不是对程序员这个职业有什么误解?

参考代码:

def binary_search(arr,target): start,end = 0,len(arr)-1 while True: if end - start =target: end = mid else: start = mid print(binary_search([1,4,7,8,9,12],9)) print(binary_search([1,4,7,8,9,12],3))

输出结果:

4 -13,爬楼梯

题目形式:有一个楼梯,总共有10级台阶,每次只能走一级或者两级台阶,全部走完,有多少种走法?

题目难度:简单。

出现概率:约20%。爬楼梯问题是手写代码题中的百兽之豹。爬楼梯问题可以用递归来解决,但是如果考虑到时间复杂度,最好用动态规划的思想来处理,这是一个动态规划算法的教科书级别的案例。连个楼梯都爬不明白,这个算法基础令人堪忧啊!

参考代码:

def climb_stairs(n): if n==1: return 1 if n==2: return 2 a,b = 1,2 i = 3 while i2, "len(arr) should > 2!" x,y = arr[0:2] xmax = x maxdiff = x-y for i in range(2,len(arr)): if arr[i-1] > xmax: xmax = arr[i-1] if xmax - arr[i] > maxdiff: maxdiff = xmax - arr[i] x,y = xmax,arr[i] print("x=",x,",y=",y) return(maxdiff) print(max_drawdown([3,7,2,6,4,1,9,8,5]))

输出结果:

x= 7 ,y= 1 66,合并两个有序数组

题目形式:给定两个按升序排列的有序数组,将它们合并成一个新的有序数组。例如:a = [1,2,6,8], b = [2,4,7,10],输出为 arr = [1,2,2,4,6,7,8,10]

题目难度:简单。

出现概率:约15%。这道题目考察的是归并排序的基本思想。注意,这两个数组是有序的呢,你怎么可以无视这么有利的条件直接拼接上两个数组开始冒泡了???

参考代码:

def merge_sorted_array(a,b): c = [] i,j = 0,0 while True: if i==len(a): c.extend(b[j:]) return(c) elif j==len(b): c.extend(a[i:]) return(c) else: if a[i]maxlen: maxlen = i-start+1 substr = s[start:i+1] return(substr) print(longest_substr("abcbefgf")) print(longest_substr("abcdef")) print(longest_substr("abbcddefh"))

输出结果:

cbefg abcdef defh9,全排列

题目形式:给定一个数组,找出其所有可能的排列。例如: arr = [1,1,3],输出为 [[1,1,3],[1,3,1],[3,1,1]]。

题目难度:中等

出现概率:约10%。这是一道动态规划+排列组合的综合应用题。同学,你这里用递归的话你的这个时间复杂度得有多少?我们这个数组一旦有几十个元素的话,你这还能跑得动吗?

参考代码:

import numpy as np def permutations(arr): if len(arr)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3