虾皮笔试 虾皮笔试题 0423

笔试时间:2025年04月23日

历史笔试传送门:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

题目:田忌赛马

田忌与齐王各有 n 匹马。每场比赛胜者得 200 两银子,败者输 200 两银子,平局不赔不赚。每匹马仅能出场一次。已知两人每匹马的速度,问田忌最多能赢多少银子。

排序双指针

• 分别将田忌和齐王的马从慢到快排序。

• 用四个指针:

• tl/th 指向田忌最慢/最快的马;

• ql/qh 指向齐王最慢/最快的马。

2. 贪心策略

• 如果田忌最快马能赢齐王最快马:肯定赢,配对并双双向前/向后移动最快指针,结果加 200。

• 否则,用田忌最慢马去“牺牲”对抗齐王最快马:亏 200,但可以保留田忌更快的马去赢别的对手;移动田忌最慢指针和齐王最快指针。

3. 终止条件

• 当田忌所有马都已出完(tl > th)时,循环结束。

参考题解

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

#include <vector>
#include <algorithm>

int maxWinning(std::vector<int> tj, std::vector<int> qw) {
    std::sort(tj.begin(), tj.end());
    std::sort(qw.begin(), qw.end());
    int ans = 0;
    int tl = 0, th = (int)tj.size() - 1;
    int ql = 0, qh = (int)qw.size() - 1;

    while (tl <= th) {
        if (tj[th] > qw[qh]) {
            // 田忌最快胜齐王最快
            ans += 200;
            --th; --qh;
        } else {
            // 牺牲田忌最慢马对抗齐王最快
            if (tj[tl] < qw[qh]) {
                ans -= 200;
            }
            ++tl; --qh;
        }
    }
    return ans;
}

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

public static int maxWinning(int[] tj, int[] qw) {
    Arrays.sort(tj);
    Arrays.sort(qw);
    int ans = 0;
    int tl = 0, th = tj.length - 1;
    int ql = 0, qh = qw.length - 1;

    while (tl <= th) {
        if (tj[th] > qw[qh]) {
            // 田忌最快胜齐王最快
            ans += 200;
            th--; qh--;
        } else {
            // 牺牲田忌最慢马对抗齐王最快
            if (tj[tl] < qw[qh]) {
                ans -= 200;
            }
            tl++; qh--;
        }
    }
    return ans;
}

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

from typing import List

def max_winning(tj: List[int], qw: List[int]) -> int:
    tj.sort()
    qw.sort()
    ans = 0
    tl, th = 0, len(tj) - 1
    ql, qh = 0, len(qw) - 1

    while tl <= th:
        if tj[th] > qw[qh]:
            # 田忌最快胜齐王最快
            ans += 200
            th -= 1
            qh -= 1
        else:
            # 牺牲田忌最慢马对抗齐王最快
            if tj[tl] < qw[qh]:
                ans -= 200
            tl += 1
            qh -= 1

    return ans

第二题

题目:括号匹配(且“[]”不得嵌在“()”内部)

给定一串混合字符的字符串,判断其中圆括号 () 和方括号 [] 的匹配是否有效,且不允许出现 [...] 完全嵌在 (...) 内部的情况。非括号字符忽略。

样例输入

()a((d))

样例输出

true

参考题解

1. 栈

• 遇到左括号 ( 或 [ 时入栈。

• 遇到右括号时:

• 若栈空,直接 false;

• 否则出栈并判断类型是否匹配。

2. 特殊限制

• 在入栈 [ 时,如果栈顶是 (,则立即 false,避免 [...] 嵌在 (...) 内部。

3. 遍历结束后,若栈空则整体合法,否则不合法。

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

#include <iostream>
#include <string>
#include <stack>

bool checkBrackets(const std::string &s) {
    std::stack<char> st;
    for (char ch : s) {
        if (ch == '(' || ch == '[') {
            // 不允许 '[' 在 '(' 内部入栈
            if (ch == '[' && !st.empty() && st.top() == '(') {
                return false;
            }
            st.push(ch);
        } else if (ch == ')' || ch == ']') {
            if (st.empty()) {
                return false;
            }
            char top = st.top(); st.pop();
            if ((ch == ')' && top != '(') ||
                (ch == ']' && top != '[')) {
                return false;
            }
        }
        // 其他字符忽略
    }
    return st.empty();
}

int main() {
    std::string s;
    std::getline(std::cin, s);
    std::cout << (checkBrackets(s) ? "true" : "false") << "\n";
    return 0;
}

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

import java.util.Scanner;
import java.util.Stack;

publicclass BracketValidator {
    public static v

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

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

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

全部评论

相关推荐

06-18 14:34
门头沟学院 Java
黑皮白袜臭脚体育生:你现在应该先跟妈妈打电话聊,跟她讲讲来上海涨了很多见识,看到了一些什么风景,只是发现工作也没那么好找,然后说想爸爸了,也想她了,感觉现在压力好大,这样一个是可以减轻你的压力,毕竟你的压力一部分就来源于提前立了flag但是又做不到,被架住了,主动找妈妈打电话说就把这个事揭过去了,诉苦还能顺便缓解精神压力,一个是可以减轻妈妈的精神压力,因为她也不知道你什么情况,总会担心,加上爸爸上个月去世,即使她不说心里肯定也是很悲伤的,你这个时候跟她打电话会让她也振作起来,为母则刚,孩子过得不好她就会从悲伤中转移注意力到你身上,会说让你不急,工作慢慢找,你再顺势跟她说好的,让她不要因为伤心过度坏了身体,家里还有你在,即使工作不好找也会坚持努力下去,哪天机会来了就成功了,这样进一步降低她的压力,也表明你不是收到压力就退缩的懦夫,这样做至少能在一两个星期到一两个月内把压力降低到比较小的程度,如果一直维持高压状态即使机会来了也抓不住,全局来看降压势在必行,然后在上海没找到工作之前不要频繁打电话,没什么东西能讲,最后尬聊只会起反作用,应该隔段时间就给妈妈买点上海的特产寄回去,这样她感受到你孝心也不会后面主动施压你,进一步降低在找到工作前这段时间的压力,更利于找工作的沉淀和面试发挥,不用太贵的,礼轻情意重,当然如果要买贵的也可以,送佛送到西,我在放心借给你存了20w,自己申请自己去取吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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