虾皮笔试 虾皮笔试题 0402

笔试时间:2025年04月02日

历史笔试传送门:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

题目:分割等和数组

给定一个只包含正整数的非空数组 nums,判断该数组是否可以被分割成两个子集,使得两个子集的元素和相等。

样例输入

[1,5,11,5]

样例输出

true

参考题解

*******************************************************************************

第二题

题目:二叉树遍历

给你一个全部节点是正整数的二叉树,逐层的从左到右访问所有节点,输出为一个二维数组;注:# 代表该节点没有值

样例输入

{5,20,11,#,7}

样例输出

[[5],[20,11],[7]]

参考题解

二叉树的层序遍历,直接bfs即可。

第三题

题目:艾尔罗大迷宫

设计一个迷宫游戏系列艾尔罗,在设计初期为了方便,使用n*n矩阵表示.0代表可到达区域,1表示不可到达区域.例如有:[[0, 1, 0, 0][0, 0, 0, 0][0, 1, 0, 1][0, 0, 1, 0]]在这个例子中,因为map[3] [2] = 1和map[2] [3] =1.所以相对于起点map[0] [0]来说,map[3] [3]的位置是不可达的(只允许左右上下移动).为了方便评估设计的艾尔罗迷宫的难易程度,需要有一个方便的算法统计每个迷宫不可到达的网格有多少个.比如上面的不可达区域为4个原生不达的区域加上1个衍生的map[3] [3].总数为5.约束:起点统一定义为[0,0].给定的迷宫二维数组矩阵形式是n*n,且[0,0]也总是可达(值为0),原生不可达的用值1表示。

样例输入

[[0,1,1,0],[1,0,0,0],[0,1,0,1],[0,1,1,0]]

样例输出

15

说明:[0,0]被困,所以都不可达。

参考题解

统计原生障碍数量:遍历二维矩阵,统计所有值为1的元素数量。广度优先搜索(BFS)标记可达区域:从起点[0,0]出发,使用BFS遍历所有可达的0区域,并标记已访问的位置。计算不可达的0区域:遍历整个矩阵,统计所有未被访问且值为0的元素数量。总不可达数:原生障碍数 + 不可达的0区域数。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

class Solution {
public:
    int apply(vector<vector<int>>& generated_map) {
        int n = generated_map.size();
        vector<vector<bool>> visited(n, vector<bool>(n, false));
        queue<pair<int, int>> q;
        q.push({0, 0});
        visited[0][0] = true;

        // 定义四个方向
        vector<pair<int, int>> directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

        while (!q.empty()) {
            auto [x, y] = q.front();
            q.pop();
            for (auto [dx, dy] : directions) {
                int nx = x + dx;
                int ny = y + dy;
                if (nx >= 0 && nx < n && ny >= 0 && ny < n) {
                    if (!visited[nx][ny] && generated_map[nx][ny] == 0) {
                        visited[nx][ny] = true;
                        q.push({nx, ny});
                    }
                }
            }
        }

        // 统计障碍物数量
        int count_ones = 0;
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < n; ++j)
                if (generated_ma

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

好奇的伊登准备进厂:找了两个多月沟通六千多,不到十个面试至今仍未找到实习,看完你还想坚持下去吗
点赞 评论 收藏
分享
Ryan188:我觉得你简历最核心的问题就是太大众化。 你要有一个认知就是,如果你是面试官,你是HR,其实他们每天都会收到非常多大量重复的像你这种简历。 就是说你的项目不是一个真实的上线的项目,可能是从网上学习而来的,或者是直接copy别人的项目,没有新意,没有展现出你自己对技术的思考,而且你的学历也不占优,自然而然就很难有人去选择你。 所以要做的实际上是差异化方向的工作,也就是“给我一个选择你的理由”,比如最近很火的ai,你可以写一个ai相关项目比如问答应用或者mcp编写或者agent搭建,需要你先花点时间学习,34天吧,展现你对这方面相较于其他人特有的思考; 或者写相关技术博客输出一些技术内容,有具体可以量化的成果等等去增加你的竞争力。 但以上这些都是后话,我去年在你这个时候也是没人理我,咱们双非学历也没实习,难找也正常,我当时整个3月份都没人鸟我,直到有个新招的岗位,很缺人很急,流程很快,所以我一下子进去了,所以运气方面也很重要,需要你一直坚持喝复盘,直到看到光明,加油兄弟
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
3
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务