腾讯技术岗823笔试交流(python)
写倒是写出来四题,但是除了第一题有10%之外都是0
翻了一下,好像没有多少python的分享,把自己的贴出来交流一下好了
第一题用了跟栈,找到能匹配的就消掉,但是最后一个用力出来的结果不对,c++的分享里面矩阵的方法不太懂
import sys str = sys.stdin.readline() stack = [] def look(k): if k == ")": for i in range(len(stack)-1,-1,-1): if stack[i] == "(": del(stack[i]) return elif k == "]": for i in range(len(stack)-1,-1,-1): if stack[i] == "[": del(stack[i]) return stack.append(k) for i in str: if i == "("&nbs***bsp;i == "[": stack.append(i) elif i == ")"&nbs***bsp;i == "]": look(i) print(stack) print(len(stack))第二题的面积想了很久跟x轴的交点,出来的数也用round修得跟用例一模一样了,还是0
import sys,math n = int(sys.stdin.readline()) def fun(x,a,c): return a/3*(x**3)+0.5*(x**2) +c*x def ori(x,a,c): return a*(x**2)+x+c if n>0: for i in range(n): str = sys.stdin.readline().split() a = int(str[0]) b = int(str[1]) c = int(str[2]) d = int(str[3]) print(a,b,c,d) if ori((-1/(2*a))) <0: zero = (-1+math.sqrt(1-4*a*b))/(2*a) else: zero = None print(round(abs(fun(d,a,b)-fun(c,a,b))),5)d第三题取模,本地都能过但是在线就是0,
做了一个dict,只有一个人的组合是n个,从2-n的话,k人团体的组合数是s = 1+2+3+...+n-k+1(找出来的规律不知道对不对),总和就是1*n +...+k*s +...+n
import sys n = sys.stdin.readline() n = int(n) def cal(k): res = 0 for i in range(1,k+1): res += i return res dic = {} dic[1] = n for i in range(2,n+1): dic[i] = cal(n-i+1) res = 0 for i in range(1,n+1): res += i * dic[i] #print(res) print(res% (10**9+7))第四题我的思路是把每个点作为key,可以通达的点作为value存到dict里面
然后暴力搜一下每个组合的value值是不是一样
好像有10%的过了,但是后面的超时
import sys str = sys.stdin.readline().split() n = int(str[0]) m = int(str[1]) p = dict() def add_route(x,y): if x not in p: p[x] = list() if y not in p: p[y] = list() p[x].append(y) p[y].append(x) for i in range(m): temp = sys.stdin.readline().split() a = temp[0] b = temp[1] add_route(a,b) plist = list(p.keys()) #print(plist) count = 0 def com(x,y): return set(x)==set(y) for i in range(len(plist)): for j in range(i+1,len(plist)): if com(p[plist[i]],p[plist[j]]) == True: count+=1 print(count)第五题看起来跟第四题有点像,可是没时间了,做的话应该会做个dict,然后用动态规划做
感想:看到有全ac的大佬感觉自己已经凉透了,不过有没有同样用python的来分享一下思路:-)