快手 4.12 工程类笔试B卷

一共四道编程,说实话感觉难度不是很难。

#1 对于输入的任意一个表达式,输出其小括号匹配的次数以及未匹配的左右括号的个数。

例如:
输入:(1 + 2)()))(
输出为: 2 1 2 

对于这一题,显然弄一个栈即可。

AC 代码如下:

s = input()

stack = []

pair = 0
l = 0
r = 0

for i in s:
    if i == '(':
        stack.append(i)
    elif i == ')':
        if len(stack) > 0 and stack[-1] == '(':
            pair += 1
            stack.pop()
        else:
            stack.append(i)

for i in stack:
    if i == '(':
        l += 1
    else:
        r += 1

print('%d %d %d' % (pair, l, r))
#2 GetPowerFactor
贪心即可。

对于给定 r n,判断 r 是否能仅由 n 的 i 次幂之和组成。如果可以,输出 i 的列表(其中每个 i 只能用一次)。

例如:
get(39, 3) == [1,2,3]
get(33,3) == []
get(1,3) == [0]

AC 代码如下:
!!注意第二题开始输入输出方式类似 LeetCode,楼主因为要在本地调试的原因没有同在线提交的格式完全一致。

def get(r, n):
    radix = []
    base = 1
    result = []
    while base <= r:
        radix.append(base)
        base *= n
    for i in reversed(range(len(radix))):
        if r >= radix[i]:
            r -= radix[i]
            result.append(i)
    if r == 0:
        return list(reversed(result))
    else:
        return []
#3 假定有 N 个顾客,每个顾客具有两个属性 a 和 b。每个顾客的不满意度可以表示为(a * (该顾客前面的人的个数)  + b * (该顾客后面的人的个数))。
例如,有三个顾客,其属性(a,b) 分别为 (1,3), (4,5), (9,5),排列为 [1,2,3]。则顾客 2 的不满意度为 4 * 1 + 5 * 1 = 9。
对于一组顾客,给出使得总不满意度最小的排列。

例如:
a = [8,9,7]
b = [6,8,3]

排序结果为 [3,1,2]

对顾客按照 b[i] - a[i] 排序就好了。

AC 代码如下:
def userSort(a , b):
    gen = []
    for i in range(len(a)):
        gen.append([b[i] - a[i], i])

    gen.sort(key=lambda x: x[0])
    result = []
    for i in gen:
        result.append(i[1] + 1)
    return result

#4 
给定一字符矩阵,其中标为 '*' 的地方不能坐人,标为 '.' 的地方能做人。因为疫情影响,要求每个人相邻的位置不能有人。求这一矩阵最多能坐下多少人。

例如,对

[['*', '.', '*', '*', '.'], 
 ['*', '.', '*', '*', '*'], 
 ['*', '.', '*', '*', '.']]

最多能坐 4 个人。

这题应该事 DFS,但是楼主只砍了 80% 就交卷取快递去了。代码太丑就不献上了(

#快手笔试##快手##笔试题目##实习#
全部评论
最后一题 遍历数组,遇到是“.”的把右边和下边给换成“*”,注意一下边界就能AC😂
1 回复 分享
发布于 2020-04-12 18:07
哎  只有第四个完全AC了
点赞 回复 分享
发布于 2020-04-12 18:08
大佬是什么岗位
点赞 回复 分享
发布于 2020-04-12 18:08
第二题可以ac的,我的天,时间不够了,代码来不及复制到网页了
点赞 回复 分享
发布于 2020-04-12 18:11
请教下第三题按 b[i] - a[i] 排序是为什么的?
点赞 回复 分享
发布于 2020-04-12 18:19
第3题一个思路,时间不够边界没处理,出来只有20,裂开了😂
点赞 回复 分享
发布于 2020-04-12 18:27
最后一题没时间写了,直接return 0,竟然过了20%😂
点赞 回复 分享
发布于 2020-04-12 19:51
第三题我还是不明白,为什么排序就可以了啊
点赞 回复 分享
发布于 2020-04-12 20:07
最后一题我暴力的。。结果ac了
点赞 回复 分享
发布于 2020-04-12 20:43

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
gcniz:一天写两千行你闹呢
点赞 评论 收藏
分享
5 16 评论
分享
牛客网
牛客企业服务