当前位置: 首页 > news >正文

【C++】 —— 笔试刷题day_1

为了锻炼自己写代码的思路,开始每日刷题,加油!!!

第一题 数字统计

在这里插入图片描述

题目要求:

​ 给定一个范围 [L , R] 求出数字L在该区间内出现的次数。(其中1<=L<=R<=10000)

算法思路:

在这里插入图片描述

代码:

#include<iostream>
 using namespace std;

 int main()
 {
    int L,R;
    cin>>L>>R;
    int count =0;
    for(size_t i = L;i<=R;i++)
    {
        int tmp = i;
        while(tmp)
        {
            if(tmp %10 == 2)
            {
                count++;
            }
            tmp/=10;
        }
    }
    cout<<count<<endl;
    return 0;
 }

第二题 两个数组的交集

在这里插入图片描述

题目要求:

​ 给定两个整数数组,返回这两个数组的交集(共同的元素)

注意: 多个相同的元素,只算一个。

算法思路:

​ 利用nums1中的数据,映射出哈希表,然后遍历nums2,如果存在于nums1中相同的元素,就插入到要返回的数组(vector中)。

注意: 这里可以使用STL的容器,也可以使用简单的数组来模拟哈希表;这里就用数组来模拟哈希表。

在这里插入图片描述

代码:

class Solution {
public:
    bool arr[1001] = {0};
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        // write code here
        for(auto e:nums1)
        {
            arr[e] = true;
        }
        vector<int> ret;
        for(auto e:nums2)
        {
            if(arr[e])
            {
                ret.push_back(e);
                arr[e] = false;
            }
        }

        return ret;
    }
};

第三题 点击消除

在这里插入图片描述

题目要求:

​ 输入一个字符串,每一次消除相邻位置相同的字符(删除之后前后的字符就相邻了);就比如:字符串"abbac",删除"bb"后就变成了"aac",此时"aa"就相邻了,还需要继续删除;最后结果就是"c"。

算法思路:

​ 这个题,以至于这种类型的题都可以使用栈这个数据结构来写,思路如下:

​ 遍历字符串,如果栈为空或者字符串中元素不等于栈顶元素,就入栈;否则就出栈。最后如果栈为空就表示完全删除后没有字符了。

如果栈不为空,那栈中数据就是最后的字符串(注意: 栈中从栈顶到栈底与最后结果是相反,需要进行相关操作输出正确的顺序)。

这里可以使用栈这个数据结构(STL中栈容器),也可以使用其他数据结构或者数组来模拟栈。
在这里插入图片描述

代码:

​ 这里写两个代码,一个是直接使用栈结构的,另一个就用数组(string)模拟栈结构。

栈结构:

#include<iostream>
#include<stack>

using namespace std;

int main()
{
    string str;
    stack<char> s1;
    cin>>str;
    for(auto ch:str)
    {
        if(s1.empty() || ch != s1.top())
        {
            s1.push(ch);
        }
        else {
            s1.pop();
        }
    }
    if(s1.empty())
    {
        cout<<'0';
        return 0;
    }
    stack<char> s2;
    while(!s1.empty())
    {
        s2.push(s1.top());
        s1.pop();
    }
    while(!s2.empty())
    {
        cout<<s2.top();
        s2.pop();
    }
    return 0;
}

数组模拟栈结构:

#include <iostream>
using namespace std;

int main() {
    string str;
    cin>>str;
    string ret;
    for(auto ch: str)
    {
        if(ret.size()==0||ret[ret.size()-1]!=ch)
        {
            ret.push_back(ch);
        }
        else 
        {
            ret.pop_back();
        }
    }
    if(ret.empty())
    {
        cout<<'0';
        return 0;
    }
    cout<<ret;
    return 0;
}

今天的题目解析到这就结束了,坚持坚持!!!

相关文章:

  • RHEL/CentOS 7.9使用firewalld限制出方向策略
  • Javaweb后端文件上传@value注解
  • 操作系统之进程状态、优先级和切换与调度
  • 【C语言基础】变量与算术表达式介绍
  • SpringBoot -拦截器Interceptor、过滤器 Filter 及设置
  • SpringBoot使用Nacos进行application.yml配置管理
  • 日期类、Date、Calendar、IO 流、File
  • Uniapp实现地图获取定位功能
  • 基于muduo+mysql+jsoncpp的简易HTTPWebServer
  • linux wifi driver深度实践之内核编译加载
  • 从零构建CNN:框架与自定义实现对比
  • 本地部署Hive集群
  • 使用RabbitMQ实现流量削峰填谷
  • 数据结构 -图 -基础
  • 软考网络和信息安全哪个好?
  • 【推荐项目】 043-停车管理系统
  • 本地部署资源聚合搜索神器 Jackett 并实现外部访问
  • SQL注入之sqli-labs靶场搭建
  • 点云从入门到精通技术详解100篇-基于超像素分割和点云配准的电力设备红外三维建模与应用(续)
  • 【MySQL_05】语法简述(是语法,不详细介绍各种语句)
  • 陶石不语,玉见文明:临平玉架山考古博物馆明日开馆
  • 博物馆日|为一个展奔赴一座城!上海171家博物馆等你来
  • 上海老字号卖黄金,与动漫IP联名两周销售额近亿元
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 德州国资欲退出三东筑工,后者大股东系当地房企东海集团
  • 南昌上饶领导干部任前公示:2人拟提名为县(市、区)长候选人