admin 管理员组

文章数量: 1184232

文章目录

    • 概要
    • 第一题 列表
    • 第二题 二叉树

概要

小米2025届春招笔试题2-软件开发方向
警告:回忆可能有出入,仅供参考

第一题 列表

描述
小明有很多手套,同一副手套的编号是一样的(编号从 1 1 1开始)。现在手套摆放混乱,小明从中随意拿出一批手套,共计有 n n n只( n n n为偶数),并进行 m m m次询问。每次的询问内容为:拿出来的这批手套中,若恰有 ( r − l + 1 ) 2 \frac{(r-l+1)}{2} 2(rl+1)副手套则输出 y e s yes yes,否则输出 n o no no。其中, l l l为这批手套中的第 l l l只, r r r为这批手套的第 r r r只。( r > l r>l r>l

输入描述
拿出来的手套数量 n n n与询问次数 m m m
手套的 n n n个编号
每次询问需要的 l l l r r r

输出描述
满足题目条件输出 y e s yes yes,否则输出 n o no no

示例:
输入:
6 4
2 3 1 1 2 3
1 4
3 4
3 6
1 6
输出:
no
yes
no
yes

########################### 分析 ###########################

# 输入 手套数量 6 、询问次数 4
# 输入 手套编号 2 3 1 1 2 3

# 第一次询问 输入 1 4 
# 即 2 3 1 1 ,只有1副手套不等于[(4-1+1)/2=2],输出 no

# 第二次询问 3 4
# 即 1 1,恰有1副手套等于[(4-3+1)/2=1],输出 yes

# 第三次询问 3 6
# 即 1 1 2 3 ,只有1副手套等于[(6-3+1)/2=2],输出 no

# 第四次询问 1 6
# 即 2 3 1 1 2 3 ,恰有3副手套等于[(6-1+1)/2=3],输出 yes

########################### 开始编码 ###########################
def main():
    # gloves_num 手套数量 
    # query_num 询问次数 
    gloves_num, query_num = list(map(int, input().split()))
    # 手套编号
    gloves = list(map(int, input().split()))
    
    if gloves_num != len(gloves):
        msg = "手套数量与编号个数不匹配!"
        return msg
    
    results = []
    for i in range(query_num):
        # 每次询问需要的 l 与 r
        l, r = list(map(int, input().split()))
        slice_list = gloves[l-1 : r]

        # 计算元素重复的个数(编号重复的手套个数)
        count_dict = {} 
        for element in slice_list:
            count_dict[element] = count_dict.get(element, 0) + 1
        # 统计 Dict 中 value=2 出现的次数
        a = sum(1 for value in count_dict.values() if value == 2) # 括号里是 生成器表达式

        # 计算  (r-l+1)/2
        b = (r - l + 1) // 2

        result = "yes" if a == b else "no"
        results.append(result) 
        # results[i] = result # 报错是因为 results 是空list,索引i不存在
    results = "\n".join(results)
    return results

if __name__ == '__main__':
    main()

第二题 二叉树

😭😭不会,题目也忘了。😭😭😭

本文标签: 小米