【秋招笔试】8.18科大讯飞秋招-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导

✨ 本系列打算持续跟新 春秋招笔试题

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

✨ 笔试合集传送们 -> 🧷春秋招笔试合集

🍒 本专栏已收集 60+ 套笔试题,笔试真题 会在第一时间跟新

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

alt

🌰 科大讯飞莱拉!!

1️⃣ 打卡题,简单的模拟

2️⃣ 很基础的栈模拟题,比较简单

3️⃣ 平时做题不仔细看数据范围的小伙伴有福了!!数据范围看起来需要线性或者log的做法,但仔细分析之后发现是个诈骗题

xx: 没啥思路打个暴力骗个分吧,哎,我靠,怎么 AC了

🍈 01.花园装饰

问题描述

K小姐是一位园艺爱好者,她想要在自己的花园里创造一个独特的装饰。她决定用花盆摆出一个倒立的三角形图案。K小姐有很多相同的花盆,每个花盆上都刻有一个数字。她想知道,如果给定一个数字N,她应该如何摆放花盆来创造这个倒立的三角形图案。

输入格式

输入一个正整数 ,表示花盆上刻的数字。

输出格式

输出一个由数字 组成的倒立三角形图案。每行末尾不应有多余的空格。

样例输入

5

样例输出

55555
5555
555
55
5

数据范围

题解

按照题意模拟输出

参考代码

  • Python
# 读取输入的数字N
N = int(input())

# 外层循环控制行数,从N递减到1
for i in range(N, 0, -1):
    # 内层循环在每行中重复打印N
    # 使用字符串乘法来重复数字N
    print(str(N) * i)
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 创建Scanner对象读取输入
        Scanner scanner = new Scanner(System.in);
        
        // 读取输入的数字N
        int N = scanner.nextInt();
        
        // 外层循环控制行数,从N递减到1
        for (int i = N; i > 0; i--) {
            // 使用StringBuilder来高效构建字符串
            StringBuilder line = new StringBuilder();
            
            // 内层循环在每行中重复添加N
            for (int j = 0; j < i; j++) {
                line.append(N);
            }
            
            // 打印当前行
            System.out.println(line);
        }
        
        // 关闭Scanner
        scanner.close();
    }
}
  • Cpp
#include <iostream>
#include <string>

using namespace std;

int main() {
    int N;
    
    // 读取输入的数字N
    cin >> N;
    
    // 将N转换为字符串,方便后续使用
    string num = to_string(N);
    
    // 外层循环控制行数,从N递减到1
    for (int i = N; i > 0; i--) {
        // 使用string的repeat方法重复N字符i次
        cout << string(i, num[0]) << endl;
    }
    
    return 0;
}

🚀 02.数字合并的魔法

问题描述

在一个神秘的魔法世界中,K小姐正在进行一项有趣的实验。她有一个空的魔法栈,每次她施法都会向栈中加入一个数字。每当栈顶有两个相同的数字时,它们会合并成一个更高的数字,具体规则是:两个连续的相同数字 会合并为 。K小姐想知道经过 次施法后,栈中剩下的数字是什么。

输入格式

第一行包含一个整数 ,表示施法的次数。
第二行包含 个正整数,表示每次施法时加入的数字。

输出格式

输出一行数字,表示施法结束后栈中剩下的数字(自栈底至栈顶)。

样例输入

6
1 1 2 3 4 5

样例输出

6

数据范围

,施法加入的数字为 中的整数。

题解

本题的核心思路是使用栈结构来处理数字的压入和合并。

每次施法时,将数字压入栈中,并检查栈顶是否有两个相同的数字。

如果有,则将这两个数字合并为一个更高的数字,重复此过程直到不再有相同数字。

算法的时间复杂度为 ,空间复杂度为

参考代码

  • Python
# 导入所需的库
import sys

def magic_stack_operations(m, operations):
    stack = []  # 初始化一个空栈
    for x in operations:
        stack.append(x)  # 将数字压入栈中
        # 检查栈顶是否有两个相同的数字
        while len(stack) >= 2 and stack[-1] == stack[-2]:
            # 取出栈顶的两个相同数字
            val = stack.pop()  # 弹出栈顶元素
            stack.pop()  # 再弹出一个相同的元素
            stack.append(val + 1)  # 将合并后的新数字压入栈中
    return stack

# 主函数
if __name__ == "__main__":
    m = int(input())  # 读取施法次数
    operations = list(map(int, input().split()))  # 读取施法操作
    result = magic_stack_operations(m, operations)  # 进行魔法栈操作
    print(" ".join(map(str, result)))  # 输出结果
  • Java
import java.util.*;

public class MagicStack {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int m = scanner.nextInt();  // 读取施法次数
        Stack<Integer> stack = new Stack<>();  // 初始化一个空栈
        
        for (int i = 0; i < m; i++) {
            int x = scanner.nextInt();  // 读取施法操作
            stack.

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

互联网春秋招笔试题汇总 文章被收录于专栏

这里收集了超全的互联网春秋招笔试题,欢迎大家的订阅,会持续跟新的

全部评论
🥳
点赞 回复 分享
发布于 08-19 21:58 天津

相关推荐

难度挺大的,做完不能回头看一、单选:1、float==double:float会被转成double,即便如此,仍有可能返回false2、AdaBoost算法确实会加大此前决策树(或其他弱分类器)分类错误的权重,使下一个模型尽可能正确,所以依赖之前的模型;3、GBDT(Gradient&nbsp;Boosting&nbsp;Decision&nbsp;Tree,梯度提升决策树)是一种集成学习方法,它通过迭代地构建决策树来优化损失函数,从而组合成一个强学习器。其核心思想是通过计算损失函数在当前模型上的梯度(或近似梯度),来定位模型的不足之处,并基于这些梯度信息来构建新的决策树模型,以逐步减少损失函数的值。4、AdaBoost和GBDT都属于决策树模型boosting方法5、生成式预训练(Generative&nbsp;Pre-Training)是一种在自然语言处理(NLP)和计算机视觉等领域广泛使用的技术,其核心思想是通过在大规模无标签数据上进行预训练,使模型学习到数据的内在规律和表示,从而能够更好地适应下游任务,生成式预训练本身并不直接与目标函数绑定,有助于缓解过拟合问题,不一定直接保证有助于鉴别的精细化;6、鉴别性预训练通常指的是那些直接针对特定任务(如分类或回归)进行优化的预训练方法,分类准则可以用交叉熵,回归准则可以用最小均方误差7、鉴别性训练通常应用在机器学习,特别是语音识别和自然语言处理等领域中,是一种通过最小化目标函数来优化模型性能的训练方法。在最小化目标函数的过程中,可能会导致底层权重向最终目标过多调整,从而忽略了隐藏层的重要性;8、DNN(深度神经网络)参数确实可以使用鉴别性预训练(Discriminative&nbsp;Pre-Training,简称DPT)来进行鉴别初始化。9、状态模式实际上很好地体现了封装性;10、状态模式通过将状态逻辑分散到多个状态类中来解决复杂的逻辑问题,但这确实可能导致类的数量增加;11、状态模式非常适合处理包含大量分支判断语句的代码12、在状态模式中,通常会有一个抽象状态角色(State&nbsp;interface或抽象类),它定义了所有状态类共有的接口。这个接口包括了一些方法,这些方法对应于环境类在不同状态下可能需要执行的行为13、Adam结合了动量法和RMSProp算法的思想,使得Adam能够适应不同参数的更新需求,加快收敛速度;14、SGD容易受到数据噪声的影响,导致训练过程不稳定,可能更容易达到全局最优解;15、处理大规模数据集和复杂模型时,Adam通常是一个不错的选择;而在处理小规模数据集或需要精细调整模型时,SGD或RMSProp可能更加合适16、稀疏数据是指数据集中包含大量零值或缺失值的数据。对于这类数据,使用学习率自适应的优化算法确实是一种有效的策略。学习率自适应算法能够根据数据的特性和训练过程中的梯度变化动态调整学习率,从而在稀疏数据上获得更好的训练效果17、2个长度为N的vector进行swap操作时间复杂度是O(1)18、5g的磁盘,2kb一个的簇,共有2621440个簇,使用位图法,2kb有2048字节,也就是16384位,一位标识一个簇,那么需要2621440&nbsp;/&nbsp;16384=&nbsp;160个簇19、贝叶斯是先验推后验二、编程题:1道栈,2道图论,对应难度:简单、中等、困难,各15分
查看5道真题和解析 投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
1 3 评论
分享
牛客网
牛客企业服务