9.3京东笔试
又是凌晨笔试的一天。。。
算法岗第二批笔试,20选择+3编程
选择包括F1-score计算,栈数据结构,概率,MySQL,Python语句,二分查找,矩阵特征值等。大概也就一两道不会。
编程1:
找到每个数x的最小因子p使得p*p>x,取sqrt遍历维护变量即可。
import math def factor(x): mini = float("inf") res = -1 for i in range(1, int(math.sqrt(x)) + 1): if x % i == 0: fac = x // i num = fac * fac if num < mini and num > x: mini = num res = fac return res t = int(input()) for i in range(t): x = int(input()) res = factor(x) print(res)
编程2:
定义分裂一个数字x可以为其两个因子a、b (a*b=x),或者为1、x-1。求将数组中所有的数全分裂成1的最小分裂次数。
本人用Python递归写的,不知道是超时了还是什么,样例可以过但是用例一个都没过。。。
思路就是base case为1、2、3,其他的时候用因子来分裂x。贴一下代码有大佬可以帮忙看一下。
import math def split(x): if x == 1: return 0 elif x == 2: return 1 elif x == 3: return 2 fac1 = 0 fac2 = 0 for i in range(2,int(math.sqrt(x))+1): if x%i==0 and i>fac1: fac1 = i fac2 = x//i if fac1 == 0 and fac2 == 0: fac1 = 1 fac2 = x-1 cnt1 = split(fac1) cnt2 = split(fac2) cnt = cnt1+cnt2+1 return cnt n = int(input()) res = 0 arr = list(map(int,input().split())) for num in arr: res += split(num) print(res)
没太看懂题意,是())())括号匹配问题。定义最长匹配子序列长度为n,求这个序列的最大匹配子序列长度?
样例为())()),解释为()匹配长度为2的一共有9个,()()匹配长度为4的一共有2个,所以返回26。。。人傻了
京东8成也G了。。。
#京东笔试##京东#