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

刷题强训 (day1) -- 数字统计

1、数字统计

1.1题目

1.2 思路

根据题目得知我们要统计2出现的次数,那么这就是一个枚举 + 数字拆分的过程,先设一个变量count统计2出现的次数,那么count怎么变化呢? 当然了出现一个2,count就+1,重点在于如何数字拆分,比如222,count该怎么++,我们只需要%10,/10即可,222%10 = 2,这时候count就++,222/10 = 22,再%10,再/10,去比对是否等于2即可,理清思路,我们就可以去写代码了

1.3 代码实现

#include <iostream>
using namespace std;

int main() {
    int L, R;
    cin >> L >> R;
    int count = 0;
    for(int i = L;i <= R;i++)
    {    //防止i发生变化,定义tmp记录此时的i
        int tmp = i;
        while(tmp)
        {
            if(tmp % 10 == 2)
                count++;
            tmp /= 10;
        }
    }
    cout << count << endl;

    return 0;
}

2、两个数组的交集

2.1 题目

2.2 思路

读完题目我们可以想到要遍历两个数组,如果有相同的数字就插入到新数组中。

但是有个小细节,注意去重问题,这里就可以使用哈希表,先将第一个数组中的全部元素放到哈希表中,看看第二个数组中有没有相同元素在哈希表中,如果有则放到新的数组中,

这里我们可以以数组模拟哈希,用bool类型的数组,用数组下标标记是否存在哈希表中。那么如何去重呢,就是当我们将相同的数放到新数组中的同时,将哈希表中的数删除,即将当前位置置为false。理清思路,接下来就是代码实现;

2.3 代码实现

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
    {   
        bool hash[1001] = {0};//这里也可以初始化为false
        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;
    }
};

 3、点击消除

3.1 题目

3.2 思路

读完题后我们知道本题是要消除相邻字母,最后输出剩余字母,消除全部则输出0.

这里联想想到一个括号匹配的题目,使用栈来解决这一类题目,使用先入后出的特性比较容易处理,先进一个字母,后续每一个字母和栈顶元素比较,相同则出栈,最终栈中剩余字母则是我们需要输出的字符串

这里我们可以用可变长的数组来模拟栈,这里我们就使用string,string可以从尾部进行尾删和尾插,因为如果真的使用栈我们最终得到的是一个逆序的字符串,还要reverse一下,这里可以提升一点效率。ok,理清思路,接下来就是编写代码了

3.3 代码

#include <iostream>
using namespace std;

int main() 
{
    string s,ret;//用ret来模拟栈
    cin >> s;
    for(auto ch : s)
    {   //栈不为空,且入栈元素等于栈顶元素,则出栈
        if(ret.size() && ret.back()==ch)
            ret.pop_back();
        else
         ret += ch;  //入栈
    }
    if(ret.size()) //记得判空,栈为空则输出0
        cout << ret << endl;
    else
        cout << 0 << endl;
    return 0;
}


本篇完,下篇见!


http://www.kler.cn/a/383164.html

相关文章:

  • nmap扫描优化
  • 链表的详解
  • HTML基础学习(1)
  • D102【python 接口自动化学习】- pytest进阶之fixture用法
  • 深入了解蓝牙Profile类型与设备的对应关系
  • 怎么实现柔性动态自适应IVR功能
  • 软件工程笔记一
  • Redis 数据类型详解与应用
  • 加密货币行业与2024年美国大选
  • Linux sudo命令及权限设置
  • 【MongoDB】MongoDB的Java API及Spring集成(Spring Data)
  • 免费送源码:Java+springboot+MySQL springboot 线上线下一体化的宠物交易 计算机毕业设计原创定制
  • 大语言模型在交通领域的应用分析
  • mysql知识点
  • 如何搭建在线视频流媒体服务云直播
  • 【uni-app】*.vue 与 *.uvue
  • openssl生成加密,公钥实现非对称加密
  • 鸟害防治新选择:特力康|固定式智能激光驱鸟器的优势与挑战
  • 企业如何做好进销存管理?工厂进销存实现步骤
  • 小物体检测模型
  • 全网最全软件测试面试宝典,快看!
  • 解决 Fail to pip install mlc-llm
  • scala set集合
  • ubuntu中安装mysql
  • SQL注入(1)
  • 一款根据图片内的文字,把图片分类的软件