2021Shopee通用笔试题(第二场)编程题代码解析

Shopee使用的是ACM赛制,但是数据要求确实LeetCode格式,所以处理数据的输入和输出比较麻烦,最后我选择了使用python来解题。

简单总结来说就是,写题3分钟,调格式1小时。

第一题:

简单的dp问题,从左上角走到右下角,每次只能向右或者向下走,求最小花费,状态转移方程为:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]),把第一行和第一列进行初始化,防止进行越界判断的复杂处理。

raw = input()[1:-1].split("],")
raw[len(raw) - 1] = raw[len(raw) - 1][0:-1]
l = []
for s in raw:
    l.append(s[1:].split(','))

n, m = len(l), len(l[0])

for i in range(0, n):
    for j in range(0, m):
        l[i][j] = int(l[i][j])

for i in range(1, n):
    l[i][0] += int(l[i - 1][0])
for j in range(1, m):
    l[0][j] += int(l[0][j - 1])

for i in range(1, n):
    for j in range(1, m):
        l[i][j] += min(l[i - 1][j], l[i][j - 1])

print(l[n - 1][m - 1])

第二题:

版本号比较,把字符串按点号分割成数字,然后遍历即可。

num = input().split(',')
v1, v2 = num[0].strip()[1:-1], num[1].strip()[1:-1]
num1, num2 = v1.split('.'), v2.split('.')

flag = 0
for i in range(max(len(num1), len(num2))):
    s1 = int(num1[i]) if i < len(num1) else 0
    s2 = int(num2[i]) if i < len(num2) else 0
    if s1 > s2:
        flag = 1
        break
    elif s1 < s2:
        flag = -1
        break
print(flag)

第三题:

简单的二叉树层序遍历,因为给了二叉树的数组表示,那么我们直接利用第i个元素的子元素是i*2i*2+1,模拟一遍即可完成。

tree = input()[1: -1].split(',')
tree.insert(0, 0)
l = []

q = [1]

while len(q) != 0:
    size = len(q)
    tmp = []
    for i in range(size):
        idx = q.pop(0)
        tmp.append(int(tree[idx]))
        if idx * 2 < len(tree) and tree[idx * 2] != '#':
            q.append(idx * 2)
        if idx * 2 + 1 < len(tree) and tree[idx * 2 + 1] != '#':
            q.append(idx * 2 + 1)
    l.append(tmp)

ans = "["
for i in range(len(l)):
    ans += '['
    for j in range(len(l[i])):
        ans += str(l[i][j])
        if j != len(l[i]) - 1:
            ans += ','
    ans += "]"
    if i != len(l) - 1:
        ans += ','
ans += "]"
print(ans)
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 华为海思2021数字芯片IC的笔试题目主要分为两部分,一部分是单选题和多选题,另一部分则是编程题。 单选题和多选题主要考察对数字电路和计算机原理的理解,题目涵盖了数字信号处理、数制转换、寄存器、存储器、逻辑门电路等方面的知识。需要注意的是,有些题目看似简单但是需要注意细节,例如计算机的存储空间测量单位是字节而不是位。 编程题则需要根据题目要求编写相应的程序。一般来说,编程题比较难,需要对编程语言和算法都有比较深的理解。此次考试的编程题主要考查了对链表的理解和程序设计能力。 通过本次考试,可以看出华为海思2021数字芯片IC的笔试题目难度较大,需要对相关领域有深入的掌握和理解。在备考期间,应该多加练习和思考,增加对基础知识的掌握和应用能力。 ### 回答2: 华为海思2021数字芯片IC笔试题主要考察了应聘者对于数字电路设计的相关知识点的理解和应用能力。测试题分为两部分,一部分是基础知识选择题,另一部分是设计题。 基础知识选择题主要考察了应聘者对于数字电路、布尔代数、时序分析等基础知识点的了解。比如,有一道题目是让应聘者判断一段代码是否可以正确地实现计数器功能。这需要应聘者对计数器的基本组成原理和实现方法有充分的了解。 设计题则更加考验应聘者的应用能力。其中,一道题目要求应聘者根据给定的电路输入、输出和时钟信号,设计出一个可靠稳定的时序电路。这需要应聘者对时序电路的编程能力、逻辑设计和时序分析能力有较高的掌握。 对于应聘者而言,需要提前充分准备,熟悉数字电路设计相关知识点,深入理解数字电路的实现原理和设计方法。同时,要注重考虑实际应用需求和技术实现可行性,保证设计方案的有效性。只有全面掌握相关知识和技能,才能在笔试中取得更好的成绩,从而在海思数字芯片IC设计岗位中取得更好的工作机会。 ### 回答3: 华为海思2021数字芯片IC笔试题主要考察了应聘者在数字电路设计、Verilog语言、RTL综合等方面的知识掌握程度和综合应用能力。试题设计难度适中,较为贴近实际工作中的应用场景。 第一题是给定一组规定的时序图,要求设计Verilog代码和RTL电路图,实现一个4位带使能端的同步锁存器。此题考查了对时序逻辑电路的理解,需要应聘者能够将时序图抽象成基本的组合逻辑与时序逻辑模块,结合Verilog语言编写可合成的Verilog代码和RTL电路图。 第二题是仿真题目,要求给定Verilog代码进行仿真,并观测输出信号,分析仿真结论。此题考查了对数字电路仿真的能力和Verilog语言的掌握程度,需要应聘者熟悉Verilog仿真工具的使用方法,能够正确编写测试代码,并对仿真结果进行分析。 第三题是RTL综合题目,给定Verilog代码,要求进行RTL综合并生成门级网表文件。此题考查了对数字电路综合的理解和工具使用能力,需要应聘者熟悉数字电路综合的各项规则,能够正确地进行综合操作,并生成准确的门级网表文件。 总体来说,华为海思2021数字芯片IC笔试题考查了应聘者的数字电路设计和RTL综合等方面的综合应用能力,较为贴近实际工作。应聘者可以通过思考、练习和掌握基本的数字电路设计和RTL综合知识,提升答题能力和应用水平,更好地应对类似的笔试题目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值