笔试练习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,一经查实,立即删除!

相关文章

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

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

二进制部署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元每小时&…

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

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

【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 初始化的时候…

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…

阿里云 服务器安装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:…

反射和游戏场景

主要内容 1.Unity中的反射机制运用 2.游戏场景本质 回顾一下反射的概念 程序正在运行时没有查看其它程序集或者自身的元数据&#xff0c;一个运行的程序查看本身或者其它程勋的元数据的行为就叫做反射。 在程序运行时&#xff0c;通过反射可以得到其它程序集或者自己程序集…

UCOS-III 互斥锁接口详解

在实时操作系统uC/OS-III中&#xff0c;互斥锁&#xff08;Mutex&#xff09;是一种用于管理对共享资源的访问的同步机制。互斥锁通过保证在任何时刻只有一个任务可以持有锁&#xff0c;从而防止资源竞争问题。同时&#xff0c;uC/OS-III还实现了递归锁定和优先级继承机制&…

2024杭电多校第三场

目录 1001-深度自同构 1003-游走 1007-单峰数列 1008-比特跳跃 1011-抓拍 1012-死亡之组 1001-深度自同构 每个数的答案其实与它的各个因数有关&#xff0c;正向递推一下 #include <bits/stdc.h> using namespace std; #define int long long const int N1e65; co…

51 单片机的Keil5软件

1. KEIL C51 软件获取 博主网盘下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1YBfrRh2L7SIehS5xLQkAow?pwd4211 提取码&#xff1a;4211 也可以在 KEIL 的官网上下载&#xff1a;http:// https://www.keil.com/download/product/ 打开界面如下图所示&#xff1…

读零信任网络:在不可信网络中构建安全系统04最小特权

1. 公钥基础设施 1.1. PKI 1.2. 数字证书本身并不能解决身份认证问题 1.2.1. 需要一种方法来验证获得的公钥的确属于某人 1.2.2. 公钥基础设施&#xff08;PKI&#xff09;解决了这个问题 1.3. PKI定义了一组角色及其职责&#xff0c;能够在不可信的网络中安全地分发和验证…

AMQP-核心概念-终章

本文参考以下链接摘录翻译&#xff1a; https://www.rabbitmq.com/tutorials/amqp-concepts 连接&#xff08;Connections&#xff09; AMQP 0-9-1连接通常是长期保持的。AMQP 0-9-1是一个应用级别的协议&#xff0c;它使用TCP来实现可靠传输。连接使用认证且可以使用TLS保护…

观远BI经验总结

观远BI经验总结 观远BI&#xff08;Galaxy platform&#xff09;简介 ​ 观远数据是一站式智能分析平台&#xff0c;为企业提供数据分析可视化与智能决策服务&#xff0c;打通数据采集-数据接入-数据管理-数据开发-数据分析-AI建模-AI模型运行-数据应用全流程&#xff0c;全方…

Golang | Leetcode Golang题解之第300题最长递增子序列

题目&#xff1a; 题解&#xff1a; func lengthOfLIS(nums []int) int {if len(nums)<1{return len(nums)}dp : make([]int,len(nums))for i:0;i<len(nums);i{dp[i]1}res : 1for i:1;i<len(nums);i{for j:0;j<i;j{if nums[i] > nums[j]{dp[i] max(dp[i],dp[j…