刷题强训 (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;
}


本篇完,下篇见!

上一篇:通过LoadRunner性能测试工具三大组件了解LoadRunner功能


下一篇:宏转录组组装:rnaSPAdes