笔试练习day1

目录

  • 数字统计
    • 题目解析
    • 解法
      • (枚举+数字拆分)
      • 代码
  • 两个数组的交集
    • 题目解析
    • 解法
      • 哈希表
      • 代码
  • 点击消除
    • 题目解析
    • 解法
      • 代码

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐣🐣 python
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐿️🐿️🐿️ 文章链接目录
🏀🏀🏀 笔试练习题

数字统计

链接BC153 [NOIP2010]数字统计
在这里插入图片描述

题目解析

这道题是统计2出现的次数,比如在[2,22]中,出现2的有,2,12,20,21,22,其中22中2出现了2次,所以要统计一个数中是否有多个2出现

另外我们还需要分析题目给出的范围
在这里插入图片描述
因为根据题目的信息我们可以得出是整形类型,int的数据范围是10^9,当题目给的数据范围超过这个的时候,我们要用longlong类型

解法

(枚举+数字拆分)

数字拆分这个方法比较常用,就是重复模10之后再除10
拿22举例
第一步:22%10我们就可以得到他个位的数字也就是2
第二步:个位的数字拿到后,我们就需要得到他下一位数字,也就是十位的数,22/10=2.2,因为22是整形,所以丢失小数点后面的数据,所以22/10=2
第三步:重复上面的操作2%10=2,2/10=0…
判断结束条件:设22=n,当n经过不断的除后n会等于0,此时我们只需要判断n是否等于0就可以了

代码

int main() {int l,r;cin>>l>>r;
int ret=0;
for(int i=l;i<=r;i++)
{int tmp=i;while(tmp){if(tmp%10==2)ret++;tmp/=10;}
}
cout<<ret<<endl;
}

注意代码中必须有一个中间量tmp,如果没有tmp,比如下面这个代码就会因为i一直被改变,导致一直循环

int main() {int l,r;cin>>l>>r;
int ret=0;
for(int i=l;i<=r;i++)
{while(i){if(i%10==2)ret++;i/=10;}
}
cout<<ret<<endl;
}

两个数组的交集

链接NC313 两个数组的交集
在这里插入图片描述

题目解析

这道题就是找两个数组中出现的相同数字,重复出现的只计为1个

此外这道题是核心代码模式,核心代码模式不管输入和输出,我们只管实现这个函数就可以了
比如示例1中要输入[1,2]和[2,2,2,2],我们在函数中不需要写cin或者scanf去输入这些数据,输出[2]我们也不需要写cout或者printf去输出这些数据
并且我们不需要声明头文件,比如#include< iostream>…直接用就行

另外上一题的ACM模式就是我们所有的代码需要自己去实现,头文件需要自己去写,输入输出也是自己去写…

解法

哈希表

我们以示例2为例
第一步:创造出一个哈希表,将[1,2,3]写入哈希表里
第二步:遍历另外的一个数组也就是[8,2,2,3,8],去找这个数组中的数是不是在哈希表里,如果在就用一个新数组来接收这些数

因为题目中给出的数据范围比较小,所以我们可以用数组去模拟容器,而不是直接就使用容器(因为比较麻烦,并且也会消耗时间)
在这里插入图片描述

具体的模拟的数组我们是用bool类型的数组,以数组下标去代表[1,2,3]对应的值,比如1在哈希表里,那么hash[1]=true,4步骤[1,2,3]中,所以hash[4]=false
在这里插入图片描述
但是上面这样做没有解决数字重复出现的情况
比如8没在哈希表里出现,那么箭头指向下一个
在这里插入图片描述
2在哈希表里出现了,将2写入ret数组中,箭头指向下一个
在这里插入图片描述
这是重复出现了2,我们不应该将他写入ret数组中
在这里插入图片描述
所以解决方法就是当第一个2出现写入ret数组后,我们想hash[2]=true改成hash[2]=false,这样就可以避免这样的情况出现了,也就是在ret数组中加入出现的数字后,哈希表需要将对应下标的元素改成false

代码

class Solution {bool hash[1001]={0};
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums1 int整型vector * @param nums2 int整型vector * @return int整型vector*/vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int>ret;for(auto x:nums1){hash[x]=true;}for(auto x:nums2){if(hash[x]){ret.push_back(x);hash[x]=false;}}return ret;}
};

点击消除

链接AB5 点击消除
在这里插入图片描述

题目解析

相同且相邻的两个字母可以消去,我们需要注意一种情况就是一开始两个字母相同但是不相邻,但是在消除的过程中他们相邻了,其实也是可以继续消除的
就比如abbacddc,bb和dd是可以直接就消除的,消除后字符串就变成了aacc,因为aacc是相同且相邻的字母,所以也是可以消除

解法

我们需要创造出一个栈的结构,每次存放数据的时候都需要和栈顶进行比较
在这里插入图片描述
当a存放的时候,因为栈顶没有元素,所以直接存放a
在这里插入图片描述
然后需要存放b,b和栈顶元素a进行比较,a和b不是同一个字母所以b直接存放进栈里
在这里插入图片描述
此时继续存放元素,这次的元素是b,b要和栈顶元素进行比较,因为栈顶元素也是b,所以b就不存放进去,同时要消除栈顶元素b
在这里插入图片描述
现在的栈顶元素就变成了a,现在又要存放数据,因为存放的a和栈顶a是同一个字母,所以也要拿出来
在这里插入图片描述
这时栈顶已经没有元素了,所以存放c就可以直接进入栈里面,后续的元素都是这样操作判断,最后没有元素可以存放,所以栈里的元素就是最后的结果cde
在这里插入图片描述

要模拟出这个栈我们需要用可变长的数组来模拟,在C++中我们学过string,string有有尾插和尾删的函数,所以用string比较容易完成这道题

代码

int main() {string s,st;cin>>s;for(auto ch:s){if(st.size()&&st.back()==ch){st.pop_back();}else {st+=ch;}}cout<<(st.size()==0?"0":st)<<endl;return 0;
}

因为最开始插入或者已经消除元素的时候,栈顶可能为空,或者在插入的过程中栈顶元素和插入元素相同,这时候可以用pop_back来尾删,然后我查了一下pop_back,当st为空的时候删除好像有一点影响,但是应该问题不大,所以将这两个条件放在一起
在这里插入图片描述
另一种情况就是栈顶和插入元素不相同,需要对栈顶进行尾差,这时候其实可以用push_back的,这里用的是+=运算符重载

最后要考虑插入元素完毕后,如果栈顶为空,那么就输出0,否则就输出这个栈

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

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

相关文章

C++ //练习 16.5 为6.2.4节(第195页)中的print函数编写模板版本,它接受一个数组的引用,能处理任意大小、任意元素类型的数组。

C Primer&#xff08;第5版&#xff09; 练习 16.5 练习 16.5 为6.2.4节&#xff08;第195页&#xff09;中的print函数编写模板版本&#xff0c;它接受一个数组的引用&#xff0c;能处理任意大小、任意元素类型的数组。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&a…

SQL中有多少Statements

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和操作关系型数据库的标准编程语言。SQL语句的种类繁多&#xff0c;它们被设计来执行不同的数据库操作&#xff0c;如数据查询、数据更新、数据定义&#xff08;如表和索引的创建&#xff09;等。由于SQL语…

开源AI智能名片小程序源码在对立型定位策略中的应用与深入探索

摘要&#xff1a;在当今数字化营销风起云涌的时代&#xff0c;开源AI智能名片小程序源码作为技术创新的前沿阵地&#xff0c;为中小企业及后发创业品牌提供了实现差异化竞争与市场突破的利器。本文旨在深入探讨开源AI智能名片小程序源码如何有效融入对立型定位策略之中&#xf…

程序员面试中的“八股文”:敲门砖还是绊脚石?

在现代技术行业中&#xff0c;“八股文”成为了程序员面试中的常见问题。“八股文”究竟能否在实际工作中发挥应有的作用&#xff0c;成了一个备受争议的话题。许多IT从业者都提出疑问&#xff1a;程序员面试到底考察的是什么&#xff1f;是工作能力、工作经验&#xff0c;还是…

二进制部署k8s集群之master节点和etcd数据库集群(上)

目录 1.操作系统初始化配置 2.升级Linux内核 3.部署docker引擎 4.部署etcd集群 4.1 了解etcdctl工具对etcd做增删改查 4.2 通过etcdctl工具实现数据库的备份和恢复 5.部署Master组件 6.部署 Worker Node 组件 二进制搭建 Kubernetes v1.20 k8s集群master01&#xff1a…

【Cyber RT】Apollo Cyber RT安装, 环境搭建,test ok

一、下载源码 克隆Apollo 源码仓库 git clone https://gitee.com/ApolloAuto/apollo.git (耗时30min) 二、启动Apollo Docker 开发容器 进入到Apollo源码根目录,执行下述命令以启动Apollo Docker开发容器 cd apollo ./docker/scripts/dev_start.sh 如果只是使用Cyber…

经典文献阅读之--GraphAD(端到端自动驾驶的交互场景图)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

Elasticsearch模糊查询之Wildcard

{“wildcard” : { “LPR.keyword” : { “wildcard” : “${Keyword}”} }},你的示例中使用了 wildcard 查询&#xff0c;它适用于模糊搜索&#xff0c;允许使用通配符&#xff08;* 和 ?&#xff09;来匹配字段值。你使用了 keyword 子字段来确保精确匹配&#xff0c;这是一…

使用IPIDEA海外代理助力宠物跨境电商1.1

3.如何获取具体分类的数据&#xff1f; 以前我们做选品&#xff0c;通常会招聘多个运营专员&#xff0c;每隔几小时去亚马逊平台上查看猫狗商品数据&#xff0c;然后人工把数据一条一条复制粘贴下来。通常一遍做下来&#xff0c;1-2小时就过去了&#xff08;根据数据样本的大小…

typescript 定义类型

type infoType string; let name: infoType "全易"; let location: infoType "北京"; // let age: infoType 18; // 报错 infoType string&#xff5c;number 就不报错了 let job: infoType "开发"; let love: infoType "吃喝玩乐&q…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 围棋的气(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Spring-原理篇-DispatcherServlet 初始化 怎么和IOC进行了打通?

委托模式的体现&#xff0c;在初始化醒目的时候Spring MVC为我们提供了一个DispatcherServlet&#xff0c;映射了所有的路径&#xff0c;所有的请求都会先到达这里然后被转发到具体的Controller 进行处理&#xff0c;此文来探索一下&#xff0c;DispatcherServlet 初始化的时候…

Spring Cloud Security

Spring Cloud Security是什么 Spring Cloud Security是一个为Spring Cloud应用程序提供安全性的框架。它基于Spring Security&#xff0c;并集成了额外的功能来帮助开发人员保护微服务架构中的应用程序。Spring Cloud Security提供了认证和授权的功能&#xff0c;可以轻松地将安…

Hive之扩展函数(UDF)

Hive之扩展函数(UDF) 1、概念讲解 当所提供的函数无法解决遇到的问题时&#xff0c;我们通常会进行自定义函数&#xff0c;即&#xff1a;扩展函数。Hive的扩展函数可分为三种&#xff1a;UDF,UDTF,UDAF。 UDF&#xff1a;一进一出 UDTF&#xff1a;一进多出 UDAF&#xff1a…

架构分析(CPU:ARM vs RISC-V)

ARM N2 ARM V2 对比 N2和V2&#xff0c;整体架构具有一致性。保证 SiFive P870 P870 Pipeline Veyron V1

MATLAB画散点密度图(附代码和测试数据的压缩包)

1. 有关 Matlab 获取代码关注公众号WZZHHH回复关键词&#xff0c;或者咸鱼关注&#xff1a;WZZHHH123 怀俄明探空站数据解算PWV和Tm&#xff1a;怀俄明探空站数据解算PWV和Tm 怀俄明多线程下载探空站数据&#xff08;包括检查和下载遗漏数据的代码&#xff09;&#xff1a;怀俄…

【C++深度探索】深入解析AVL树的底层实现机制

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;C从入门至进阶 这里将会不定期更新有关C/C的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 前言 AV…

使用Micronaut构建高性能微服务

使用Micronaut构建高性能微服务 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;Micronaut是一个现代化的Java框架&#xff0c;用于构建高性能、易于维护的微服务。它在设计时考虑了低内存消耗和快速启…

阿里云 服务器安装rabbit

现在我们去服务器安装一个rabbit 进入home 创建一个rabbit文件夹 /home/rabbit vim deployRabbit.sh 脚本内容 #!/bin/bash docker run -d \ --name dev.rabbit \ --network dev-net \ -p 15672:15672 \ -v ./data:/var/lib/rabbitmq \ --hostname dev.rabbit \ rabbitmq:…

OpenAI 发布 SearchGPT ,AI 搜索引擎,看看是个啥

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 OpenAI 发布 SearchGPT ,AI 搜索引擎,看看是个啥前言OpenAI 发布 SearchGPT 到底如何…