25届-9.03毒秋招(已改编)

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 合集传送们 -> 🧷学长刷题笔记

🍒 本专栏已收集 140+ 套题 🍄 题面描述等均已改编,如果和你实际看到的题面描述不一样请理解,做法和题目本质基本不变。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞

alt

🍠 得物秋招笔试,来啦!!!

🍥 本次难度中等偏上,其中最后一题是状态压缩DP,没接触过的小伙伴会有点懵,第二题也有坑,没保证数组有序

1️⃣ 简单的小学数学题

2️⃣ 哈希表的基础应用

3️⃣ BFS走迷宫的拓展版

🍏 01.LYA的水果切割难题

问题描述

LYA 开了一家水果店,专门为顾客提供切好的水果。每种水果都有其特定的切割方式,恰好可以切成 块(不论大小),也只能切成 块。

一位顾客想买一盒水果,但他有特殊要求:这盒水果中的水果块数必须在闭区间 中。

LYA 只按"个"卖水果,而不是按"块"卖水果。如果整数个水果不能满足顾客要求,LYA 就不会卖给这位顾客。如果存在整数个水果,使得这些水果切成的块数满足顾客要求,那么 LYA 希望知道她最少需要切多少个水果,以及最多需要切多少个水果。

输入格式

第一行输入一个正整数 ,代表测试数据的组数。

对于每组测试数据,一行输入三个正整数 ,含义如题所述。

输出格式

对于每组测试数据,如果 LYA 的卖水果规则不能满足顾客要求,则输出 ,否则输出两个正整数,依次代表 LYA 需要为这位顾客最少切多少个水果,最多切多少个水果。

样例输入

3
2 6 9
3 7 9
5 6 9

样例输出

3 4
3 3
-1

数据范围

题解

简单的小学数学题

  1. 最少需要的水果数(左端点,向上取整):
  2. 最多需要的水果数(右端点,向下取整):

参考代码

  • Python
import math

def solve_fruit_cutting_problem():
    cuts_per_fruit, min_pieces, max_pieces = map(int, input().split())

    # 计算最少需要的水果数(向上取整)
    min_fruits = math.ceil(min_pieces / cuts_per_fruit)

    # 计算最多需要的水果数(向下取整)
    max_fruits = max_pieces // cuts_per_fruit

    # 判断是否能满足顾客要求
    if min_fruits > max_fruits:
        print(-1)
    else:
        print(min_fruits, max_fruits)

def main():
    num_test_cases = int(input())
    for _ in range(num_test_cases):
        solve_fruit_cutting_problem()

if __name__ == "__main__":
    main()
  • Java
import java.util.Scanner;

public class FruitCuttingProblem {
    public static void solveFruitCuttingProblem(Scanner scanner) {
        int cutsPerFruit = scanner.nextInt();
        int minPieces = scanner.nextInt();
        int maxPieces = scanner.nextInt();

        // 计算最少需要的水果数(向上取整)
        int minFruits = (minPieces + cutsPerFruit - 1) / cutsPerFruit;

        // 计算最多需要的水果数(向下取整)
        int maxFruits = maxPieces / cutsPerFruit;

        // 判断是否能满足顾客要求
        if (minFruits > maxFruits) {
            System.out.println(-1);
        } else {
            System.out.println(minFruits + " " + maxFruits);
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int numTestCases = scanner.nextInt();

        for (int i = 0; i < numTestCases; i++) {
            solveFruitCuttingProblem(scanner);
        }

        scanner.close();
    }
}
  • Cpp
#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

void solveFruitCuttingProblem() {
    int cutsPerFruit, minPieces, maxPieces;
    cin >> cutsPerFruit >> minPieces >> maxPieces;

    // 计算最少需要的水果数(向上取整)
    int minFruits = (minPieces + cutsPerFruit - 1) / cutsPerFruit;

    // 计算最多需要的水果数(向下取整)
    int maxFruits = maxPieces / cutsPerFruit;

    // 判断是否能满足顾客要求
    if (minFruits > maxFruits) {
        cout << -1 << "\n";
    } else {
        cout << minFruits << " " << maxFruits << "\n";
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int numTestCases = 1;
    cin >> numTestCases;

    while (numTestCases--) {
        solveFruitCuttingProblem();
    }

    return 0;
}

🍰 02.LYA的字符串收藏

问题描述

LYA是一位热爱收藏字符串的年轻人。她特别喜欢那些由相同字符组成的字符串,称之为"完美字符串"。有一天,LYA得到了一个长度为的字符串,她想知道在这个字符串中,最多能找到多少个互不重叠的、长度为的"完美字符串"。这些"完美字符串"必须是原字符串的连续子串。LYA需要你的帮助来解决这个问题。

输入格式

第一行包含两个正整数,分别表示原字符串的长度和LYA想要寻找的"完美字符串"的长度。

第二行包含一个长度为的字符串,仅由小写英文字母组成。

输出格式

输出一个整数,表示LYA能找到的最大数量的互不重叠的长度为的"完美字符串"。

样例输入1

7 3
aaabaaa

样例输出1

3

样例解释1

LYA可以选择前三个字符"aaa"和最后三个字符"aaa",这两个子串都是长度为3的"完美字符串",且互不重叠。

样例输入2

7 2
aabaacc

样例输出2

2

样例解释2

LYA可以选择"aa"、"aa",有两个,"cc"有一个,所以选择两个 'aa'

数据范围

题解

哈希表

"完美字符串"是由相同字符组成的字符串,我们只需要找到所有连续的相同字符序列,并且判断当前能分割成多少个长度为 的子串即可 。

参考代码

  • Python
from collections import Counter

def count_perfect_substrings(n, k, s):
    # 初始化变量
    consecutive = 1  # 当前连续相同字符的数量
    char_count = Counter()  # 用于统计每个字符能形成的"完美字符串"数量
    
    # 遍历字符串
    for i in range(1, n):
        if s[i] == s[i-1]:
            consecutive += 1
        else:
            # 计算当前字符能形成的"完美字符串"数量并更新计数器
            char_count[s[i-1]] += consecutive // k
            consecutive = 1  # 重置连续计数
    
    # 处理最后一个字符
    char_count[s[-1]] += consecutive // k
    
    # 返回能形成的最大"完美字符串"数量
    return max(char_count.values()) if char_count else 0

# 读取输入
n, k = map(int, input().split())
s = input().strip()

# 计算并输出结果
result = count_perfect_substrings(n, k, s)
print(result)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        String s = scanner.next();
        
        System.out.println(countPerfectSubstrings(n, k, s));
    }
    
    public static int countPerfectSubstrings(int n, int k, String s) {
        // 用于统计每个字符能形成的"完美字符串"数量
        Map<Character, Integer> charCount = new HashMap<>();
        int consecutive = 1; // 当前连续相同字符的数量
        
        // 遍历字符串
        for (int i = 1; i < n; i++) {
            if (s.charAt(i) == s.charAt(i-1)) {
                consecutive++;
            } else {
                // 计算当前字符能形成的"完美字符串"数量并更新计数器
                char currentChar = s.charAt(i-1);
                charCount.put(currentChar, charCount.getOrDefault(currentChar, 0) + consecutive / k);
                consecutive = 1;

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

学长刷题笔记 文章被收录于专栏

这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的

全部评论

相关推荐

2024-12-11 22:41
门头沟学院 Java
得物 后端开发 年包接近40
点赞 评论 收藏
分享
2024-12-19 10:54
门头沟学院 后端
点赞 评论 收藏
分享
01-04 23:55
已编辑
广东金融学院 Java
前言本来是打算今年下半年开始投简历面试的,但今年年后由于部门两位技术骨干离职,所在的组只剩组长一人,笔者就被&nbsp;leader&nbsp;从原来的组拉过来新组支持了,需要从头开始适应2个新项目,加上平日也有工作任务,基本上只能在周末挤出点时间复习了,一直拖到国庆后才开始投简历。目前为止拿到腾讯和蚂蚁的offer,第一次跳槽估计就告一段落了,这篇文章就当作是第一次跳槽的记录帖吧。以下面经大致按照时间线记录。瓴岳科技(一面挂)一开始先投不想去的公司练练手,这是第一家面试的公司,也是唯一一家一面挂的公司开场考了一道中等难度的链表题(好巧不巧,力扣我本来就刷得少,面试前也只是刷了几道&nbsp;hot),上来磨蹭了20分钟写出来的答案只能过部分用例,然后我就知道本场面试后面都是走过场了;接下来面试官让我挑个项目讲一下难点,我磕磕绊绊讲了一些吧,项目介绍这一段我个人认为无功无过,讲了大概十几二十分钟?最后考了我一道场景题,涉及到&nbsp;kafka&nbsp;和&nbsp;redis&nbsp;的,倒不是很难,但主要考察细节,回答得一般。最后闲聊环节,面试官表示部门是做一线业务开发的,和我目前工作内容其实相差较大(笔者是搞中间件的),问为什么考虑转业务开发了?我内心os:攒面经...&nbsp;然后就面试官简单介绍了下公司的情况吧,这场面试就结束了。事后也没发感谢信,但我也很识趣地没去问HR面试结果,就让HR小姐姐静静地躺在我的wx好友列表吧....ZOOM(二面面完泡池子)为什么投&nbsp;zoom&nbsp;捏,主要是想看看外企的面试难度咋样,如果能成功拿到offer,也不失为一个选择(毕竟wlb一面面试官上来先来一句:诶你是汉族吗?(笔者眼窝比较深,双眼皮比较重,啊扯远了...)先前看&nbsp;boss&nbsp;上这个部门的&nbsp;jd,发现我简历里某个项目和&nbsp;jd&nbsp;比较匹配,于是面试前一两个小时专门抽出点时间再回顾了这个项目,果不其然,面试官上来就挑了这个项目问,然后拷打了我半小时吧,但我这个项目里有个缺陷,面试官很敏锐地问了这个缺陷点,然后针对这个缺点,疯狂拷打我,我只能唯唯诺诺,嗯嗯您说得对这确实是个优化点...&nbsp;项目持续问了半小时(项目问完其实有点心灰意冷了),然后开始问基础。SpringBoot&nbsp;一些特性、MyBatis&nbsp;和&nbsp;Spring&nbsp;整合的实现原理等,Spring&nbsp;这部分我准备得还行,基本都是从源码级别回答了面试官的问题,也都答了上来,从这里开始,稍微找回了一点信心。接着问多线程、还有一些比较偏的&nbsp;Java知识点,也都正常答上来了。基础问完,开始问场景题,面试的这个部门有搞加解密相关的东西,所以先问了&nbsp;HTTPS&nbsp;和&nbsp;HTTP&nbsp;的区别,然后就开始围绕如何在程序不重启的前提下平滑切换使用的对称密钥,emm...&nbsp;这段回答无功无过吧。最后反问环节,问了面试官对我的评价和改进建议,表示项目可能还不太熟悉,不过刚工作2年也很正常,基础很好...&nbsp;然后问我英语听说能力怎么样,我:呃反正六级是过了吧,读写基本没问题&nbsp;面试官:那如果下一面安排一场全英文的面试,你能接受不?&nbsp;我:嗨我开玩笑呢面试官你瞧这事闹的 一面结束后HR加了wx,然后wx里约了二面。二面自我介绍...&nbsp;面试官问哪个项目最熟悉,于是我挑了一个准备得比较充分的,于是后面围绕这个项目问了五十多分钟&nbsp;项目环节结束,问工作以来遇到过最大的技术挑战是什么,之后就是反问环节二面完过了几天吧,没啥消息,遂主动问了HR面试进度,她表示候选人有点多,需要等一起面完了再做决定,如果我有&nbsp;offer&nbsp;比较着急的话,就还是别等这边了,如果最终没通过的话也会发邮件通知的。&nbsp;好好好,就这么泡了一个多月,也不给我发感谢信,move&nbsp;on&nbsp;了。拼多多(二面挂)做的东西比较匹配,面试官在面试前就提前加了我wx,点开pyq一看,嗯,是个巨佬一面一面就是这个面试官了,上来打了个招呼,嗯,你好。让挑一个最熟的项目讲,ok,我开始讲的时候,面试官表示慢一点慢一点,不用着急,别当成面试。之后就是面试官一直揪住我讲的一些可能有歧义的点,然后针对这些点疯狂追问,不会给你混过去就是了,我招架不住一点。项目问了40+分钟,然后考了一道算法题,写得比较快,面试官:嗯,有刷过这题是吧。我:呃,应该有吧&nbsp;写完算法题,问工作以来觉得自己有哪些地方做得不好(建议大家可以提前准备一下这类问题,有点尖锐);之后就是反问环节。怎么回事,我看别人的拼多多面经好像和我的不一样啊&nbsp;基本都是八股+算法就过去了,到我这怎么一道八股都没有...&nbsp;全挑着项目的漏洞猛攻。总之就是表现得极其一般吧,但第二天上午面试官还是约了二面。二面同部门下另一个组面的,也是全程项目,最后一道算法题,是一道和时间处理相关的原创题,我理解错题意了,答案没写对....&nbsp;寄!隔了一两天收到感谢信,看来拼多多面试也不是统一风格,还是看具体面试官了,至少我这两场面试都没有问到半点八股,但确实自己关于项目的思考还是有点欠缺,挂了也是预料之中,和血汗厂算是有缘无分了京东(一面后没消息)其实不太想面,因为工作地不太合适,但最后还是面了吧(什么废话文学自我介绍...&nbsp;做的东西比较相似,所以面试官挑了两个项目问,问到的深度还行,项目边问的时候边穿插一点基础的考察,面试官有在同步记录一些东西。最后环节面试官问我目前的职级和的薪资情况,强调说京东目前19薪,然后我说了个预期涨幅吧,面试官也记下了。反问环节,问评价,面试官表示有规定不能回答这个问题,关于一些疑问点都有做记录了。有点奇怪,总体感觉还可以,但面试完没消息了,除了发个面试评价让我填,但我也没写就是了,就这样吧&nbsp;anyway。得物(二面拒)一面上来先写算法,是一道链表题,要求在15分钟内完成,难度适中(之前第一次面试完狠狠地刷了一波链表)。之后就是&nbsp;Java八股文,多线程、高并发、aqs(源码级别)的拷问,给定一个对象问占据多大内存;接着就是网络相关的八股,BIO/NIO&nbsp;的区别,Java&nbsp;是如何实现&nbsp;NIO,还有几道网络场景题,稍微有点偏门,按自己的理解答了,事后感觉应该没啥问题;项目环节,挑了一个项目问整体的工作流程,问了这个项目的几个关键点,也都正常答上来了(自己的项目一定要准备充分,自己脑子里预演一下&nbsp;如果自己是面试官,会问哪些问题)。反问环节,问评价,面试官表示不方便透露....&nbsp;问部门组织架构和做的事情,面试官简单说了下。得物一面总体来看,考察得比较平均,八股、算法、项目都问了,侧重点在八股,而且问的八股还是有点难度、比较偏门的八股,背八股的时候建议大家还是要有自己的思考,不然稍微延伸一点可能就不知道怎么答了。一面面试官全程面无表情,声音很小,偶尔打断你,但整场面试发挥得还可以。隔天&nbsp;HR&nbsp;就约二面了,我定到了下周,因为这个时候同步在面腾讯和蚂蚁,得物不太想去,工作地也不合适。后续就是二面拒了。腾讯(已offer)腾讯面试的部门和我做的东西方向比较匹配,所以面试都是围绕项目,八股完全没问到。(所以参考意义好像不大...一面上来先写了道算法题,不难,但要求给出最优解法。接着就问了半个多小时项目吧,然后一面就结束了。二面也是全程问项目,四五十分钟的样子。三面看起来是个大佬,专挑我简历里不熟的项目问,有点压面的意思,问了五十分钟左右吧。然后问了点开放性问题,如何评价国内外互联网公司?如何评价国内各家互联网公司的技术?你被领导批评过最严重的一次是因为什么事情?你和同事发生过最激烈的冲突是因为什么事情?后面几个问题基本是更偏向对个人性格的考察。HR面一共两个&nbsp;HR&nbsp;面的我,招聘经理和&nbsp;HRBP,但全程只有招聘经理在提问,HRBP&nbsp;应该就做记录。问题就都比较常规了,离职的原因、期望的薪酬水平、对于新公司的考虑点之类的。HR面完隔天就提交薪资流水了,然后就是&nbsp;oc、发书面offer、背调,背调通过就戴上红围脖啦~腾讯的面试总体来看是更侧重项目,八股反正我是没被问到一点,面试流程推进得也算比较快的吧。蚂蚁(已offer)蚂蚁的面试流程比较特别,是面试官主动联系你约的面试,不是在系统上通知。一面电话面,聊了一个小时,面试官基本是跟着你的节奏走,你讲到哪儿,面试官可能就追问几个具体的点,也是更加注重项目的提问,整场面试体验还是比较好的。笔试一面完安排了场笔试,在蚂蚁的代码平台上写,一共2道题,属于比较开放性的题目,偏向于考察你思考问题的角度、方向以及代码风格,全程需要和面试官保持通话,你写完需要简单讲一下你这么写的理由,以及代码是否有优化空间等。二面开始也是先聊项目,聊了半个多小时吧?然后面试官说问点基础知识吧,然后就问了点操作系统和计算机网络的知识点,基本会按照你的回答再延伸一点,考察你掌握的程度。三面三面也是全程聊项目,然后面试官围绕项目问了几个自己感兴趣的问题。HR面蚂蚁的HR面,挺有压力的,不是能随便聊聊就过去,会考察你在平常工作中遇到的问题以及如何解决之类的,需要讲出具体的&nbsp;case,不会让你很含糊地答过去;问你如何评价自己,根据你的回答也会追问很多,如果事先没准备的话确实有点难顶。最后就是问你期望的薪酬水平,以及是否有其他offer/在面试流程中的公司。之后就是&nbsp;oc、提交流水、体检、发送书面offer、背调了。就写到这吧,本来还想再写几句的,但牛客发帖有bug,准备好的一段文案发布n多次都失败了,牛客运营和产品也不干事...(小小吐槽一波
投递蚂蚁集团等公司9个岗位
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客企业服务