力扣469A

news2024/11/15 7:46:57

文章目录

  • 1. 题目链接
  • 2. 题目代码
  • 3. 题目总结
  • 4. 代码分析

1. 题目链接

I Wanna Be the Guy

2. 题目代码

#include<iostream>
#include<set>
using namespace std;
int main(){
    int highestLevelOfGame;
    cin >> highestLevelOfGame;

    set<int> levelCanPass;

    int levelOfXPass;
    cin >> levelOfXPass;
    int level;
    while(levelOfXPass --){
        cin >> level;
        levelCanPass.insert(level);
    }

    int levelOfYPass;
    cin >> levelOfYPass;
    while(levelOfYPass --){
        cin >> level;
        levelCanPass.insert(level);
    }
    
    if(levelCanPass.size() == highestLevelOfGame){
        cout << "I become the guy.";
    }else{
        cout << "Oh, my keyboard!";
    }

    return 0;
}

3. 题目总结

用时:31min
卡住原因:审题不清 – 以为整个第二行都是X可以通过的等级,第三行都是Y可以通过的等级,从而认为第二、三的数据个数无法判断。于是想到用string类型的数据获取二、三行数据(考虑到有空格,输入方式应该采用getline(cin, 字符串名) )。接下来的代码实现我考虑了两个方案:① 使用双重for循环。第一层循环遍历游戏的等级(1-n),第二层循环遍历X、Y可以通过的等级。看看是否X、Y是否包含1到n的所有数值。② 单重循环。但是要把X、Y字符串里的所有数据先整合到一个set容器里。

4. 代码分析

参照代码来源:
在这里插入图片描述
注:set.count()

#include <iostream>
#include <set>

using namespace std;

int main() {
    int n;
    cin >> n;

    set<int> x_levels, y_levels;

    int p;
    cin >> p;
    for (int i = 0; i < p; ++i) {
        int level;
        cin >> level;
        x_levels.insert(level);
    }

    int q;
    cin >> q;
    for (int i = 0; i < q; ++i) {
        int level;
        cin >> level;
        y_levels.insert(level);
    }

    bool can_pass_all_levels = true;
    for (int i = 1; i <= n; ++i) {
        if (!(x_levels.count(i) || y_levels.count(i))) {
            can_pass_all_levels = false;
            break;
        }
    }

    if (can_pass_all_levels) {
        cout << "I become the guy." << endl;
    } else {
        cout << "Oh, my keyboard!" << endl;
    }

    return 0;
}

我的代码耗时:78ms
内存占用:0KB

问:为什么人家的代码比我多了一个for循环,但是比我的耗时还少?
答(回复来自gpt):
代码比对:
① 输入处理方式:
        参考代码:通过明确读取 p 和 q 的值来确定循环次数,然后每次循环分别读取并插入到两个不同的 set 中。
        我的代码:使用了 while 循环来处理输入,但没有显式地指定循环次数,而是依赖 levelOfXPass 和 levelOfYPass 变量来控制循环次数。这种方式可能在输入处理上引入了更多的复杂性和可能的性能开销。
集合操作:
② 集合操作:
        参考代码:在判断是否可以通过所有关卡时,通过遍历从 1 到 n 的整数来检查每个关卡是否在 x_levels 或 y_levels 中。
        我的代码:通过比较 levelCanPass 集合的大小和 highestLevelOfGame 的值来判断是否可以通过所有关卡。这种方法简化了判断逻辑,但在集合操作上,需要考虑集合的插入和去重操作的性能开销。
性能差异的可能原因:
① 输入操作效率:
        我的代码的输入处理方式可能会比第一段代码更复杂,尤其是在处理大量输入时,可能会影响整体性能。
② 集合操作效率:
        虽然两者都使用了 set 数据结构,但集合的插入操作可能受到输入量的影响。特别是我的代码中的 insert 操作可能需要更多的内部重排或重新哈希,这可能会导致性能略微下降。
优化建议:
        简化输入处理逻辑,减少不必要的数据结构操作,以及选择更适合具体应用场景的数据结构和算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1839975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++入门(4)】引用、内联函数、auto

一、引用与类型转换 我们看下面这个例子。 用 int & 给 double 类型的变量起别名&#xff0c;编译器报错&#xff1a; int main() {double b 3.14;int a b;int& x b;return 0; } 用 const int & 给 double 类型的变量起别名&#xff0c;成功&#xff1a; in…

厂里资讯之app端文章搜索

app端文章搜索 1) 内容介绍 文章搜索 ElasticSearch环境搭建 索引库创建 文章搜索多条件复合查询 索引数据同步 搜索历史记录 Mongodb环境搭建 异步保存搜索历史 查看搜索历史列表 删除搜索历史 联想词查询 联想词的来源 联想词功能实现 2) 搭建ElasticSearch环境 …

A comprehensive review of machine learning-based models for fake news detection

Abstract 互联网在假新闻传播中的作用使其成为一个严重的问题&#xff0c;需要复杂的技术来自动检测。为了应对 Facebook、Twitter、Instagram 和 WhatsApp 等社交媒体网站上误导性材料的快速传播&#xff0c;本研究探索了深度学习方法和各种分类策略领域。该研究特别调查了基…

Spring Bean详解

Spring Bean作用域 默认情况下&#xff0c;所有的 Spring Bean 都是单例的&#xff0c;也就是说在整个 Spring 应用中&#xff0c; Bean 的实例只有一个 如果我们需要创建多个实例的对象&#xff0c;那么应该将 Bean 的 scope 属性定义为 prototype&#xff0c;如果 Spring 需…

【C++11】详谈隐式类型转换

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 C11中 隐式类型转换 的相关内容。 如果看到最后您觉得这篇文章写得…

基于Java的高校校园点餐系统

开头语&#xff1a; 你好&#xff0c;我是计算机专业的学长&#xff0c;如果你对高校校园点餐系统感兴趣或有相关开发需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、Tomcat 系统展示…

示例:WPF中如何不卡顿页面的情况加载大量数据

一、目的&#xff1a;在开发过程中经常会遇到一个ListBox列表里面需要加载大量数据&#xff0c;但是加载过程中会假死卡顿影响用户体验&#xff0c;或者是你的主页面加载了大量控件&#xff0c;或者切换到一个有大量元素的页面都会有这种体验&#xff0c;因为加载的都是UI元素不…

网工内推 | 中国电信、香港宽频系统工程师,CCIE认证优先,最高年薪25w

01 中国电信股份有限公司浙江分公司 &#x1f537;招聘岗位&#xff1a;系统架构师 &#x1f537;岗位职责&#xff1a; 1、做好客户网络和信息安全产品的解决方案支撑、交付及后续运营维护&#xff0c;做好相关产数项目的支撑。 2、根据信息安全管理要求&#xff0c;负责客户…

【论文精读】RayMVSNet

今天读的是发表在CVPR2022上的无监督MVS文章&#xff0c;作者来自于国防科大。 文章链接&#xff1a;RayMVSNet 项目地址&#xff1a;Github Abstract 作者希望直接优化每个camera ray上的深度值&#xff0c;所以提出这个RayMVSNet来学习1D implicit field的序列预测。使用了…

SCI一区TOP|常青藤优化算法(IVYA)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4 .参考文献5.代码获取 1.背景 2024年&#xff0c;M Ghasemi受到自然界中常青藤生长行为启发&#xff0c;提出了常青藤优化算法&#xff08;Ivy Algorithm, IVYA&#xff09;。 2.算法原理 2.1算法思想 IVYA模拟常青…

嵌入式web 服务器boa的编译和移植

编译环境&#xff1a;虚拟机 ubuntu 18.04 目标开发板&#xff1a;飞凌OKA40i-C开发板&#xff0c; Linux3.10 操作系统 开发板本身已经移植了boa服务器&#xff0c;但是在使用过程中发现POST方法传输大文件时对数据量有限制&#xff0c;超过1M字节就无法传输&#xff0c;这是…

python运算符和表达式实战

1.判断回文数 回文数就是将其反向排列&#xff0c;与原来相等 n1 n2 int(input("请输入&#xff1a; ")) t 0 while n2>0 :# 取余数t t*10n2%10# 取整数n2 // 10 if n1 t:print("是回文数") else:print("不是回文数") 2.字符串转换&…

2024青海三支一扶报名流程图解❗

报考公告 1、招考人数&#xff1a; 1910 人 2、报名时间&#xff1a;6月20-6月25 3、笔试时间&#xff1a;7月6日 4、笔试内容&#xff1a;综合知识和能力素质测验 &#x1f534;线上报名流程图解 一、本次报名采用线上报名方式&#xff0c;考生需登录《青海省人事考试信息网》…

【漏洞复现】契约锁电子签章平台 add 远程命令执行漏洞(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…

连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果&#xff0c;然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误&#xff0c;本文用于记录错误类型和解决错误的方法。 1 代码示例 SHAP 官方展示的代码如下&#xff1a; import datasets import nu…

基于SSM的个人博客管理系统

有需要请加文章底部Q哦 可远程调试 基于SSM的个人博客管理系统 一 介绍 个人博客管理系统基于SSM框架开发&#xff0c;数据库mysql&#xff0c;前端layui。系统角色分为用户和管理员。(附带配套设计文档!) 技术栈&#xff1a;JavaSSM框架mysqllayuiIDEAMaventomcat8.5jdk1.8 …

大语言模型架构---Transformer 模型

文章目录 输入编码多头自注意力机制前馈网络层编码器解码器当前主流的大语言模型都基于 Transformer 模型进行设计的。Transformer 是由多层的多头自注意力(Multi-head Self-attention)模块堆叠而成的神经网络模型。原始的 Transformer 模型由编码器和解码器两个部分构成,而…

基于PLC的全自动洗衣机控制系统课设

一、设计题目 1.1课题内容 根据设计参数和控制要求&#xff0c;设计一全自动洗衣机&#xff0c;画出其运行框图及梯形图控制程序的编制&#xff0c;并画出硬件接线图。 1.2设计参数 1.3控制要求 &#xff08;1&#xff09;按下启动按扭及水位选择开关&#xff0c;开始进水直…

PHP转Go系列 | 变量常量的使用姿势

大家好&#xff0c;我是码农先森。 变量 在 PHP 语言中&#xff0c;初始化变量虽然只有一行&#xff0c;其实包含了两步&#xff0c;一是声明变量&#xff0c;二是赋值给变量&#xff0c;同一个变量可以任意再赋值任何类型的数据。 <?php// 初始化变量 $name "man…

[linux] 系统的基本使用

用户系统&#xff1a; 之前提到&#xff0c;linux是个多用户系统&#xff0c;所以要使用linux&#xff0c;首先你得是个用户 用户&#xff1a;普通用户管理员 每一个用户有自己的用户名密码&#xff0c; 会话(session):一个终端使用服务器的全过程 从你用户登录&#xff0c;到你…