首页 > bilibili 9.4 测试开发岗笔试AK代码
头像
yQpy.
编辑于 2020-09-04 20:42
+ 关注

bilibili 9.4 测试开发岗笔试AK代码

1.类似于两数之和,拿一个cache来记录之前第一个目标值就行了。注意需要处理一些特殊情况。
class Solution:
    def find_children(self , t , a ):
        cache={}
        res=[]
        for i in range(len(a)):
            if a[i] in cache:
                if res==[]:
                    res=[cache[a[i]],i]
                else:
                    if cache[a[i]]<res[0]:
                        res=[cache[a[i]],i]
                    if cache[a[i]]==res[0]:
                        if i<res[1]:
                            res=[cache[a[i]],i]
            if t-a[i] not in cache:
                cache[t-a[i]]=i
        return res if res!=[] else [-1,-1]


2.找到数组的最大公约数。暴力直接从 数组里面最小的数找到1,看是否满足条件。
class Solution:
    def cal_max_common_factor(self , a ):
        # write code here
        def isin(x):
            for y in a:
                if y//x!=y/x:
                    return False
            return True
        q=min(a)
        for i in range(q,0,-1):
            if isin(i):
                return i


3.输出菱形,定义一个函数sub(x)用于输出长度为x的时候的数字排列。之后暴力解就行了。

class Solution:
    def print_diamond(self , n ):
        if not n&1:
            return ''
        c=n>>1
        def sub(n):
            t = str((n >> 1) + 1)
            now = ''
            p = ''
            for i in range(1, int(t)):
                now += str(i)
                p = str(i) + p
            now = now + t + p
            return now

        res=[sub(n)]
        for i in range(c):
            t=i+1
            temp=''
            q=''
            for j in range(t):
                q+='*'
            temp=q+sub(n-2*t)+q
            res.append(temp)
            res.insert(0,temp)
        ret=''
        for x in res:
            ret+=x+'|'
        return ret[:-1]



全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐