1.数字统计(pass)
1.1 解析
1.2 代码
#include<iostream>
using namespace std;
int main() {
int l, r;
cin >> l >> r;
int ret = 0; //统计2出现的个数
for (int i = l; i <= r; i++) {
int tmp = i;
while (tmp) {
if (tmp % 10 == 2)ret++;
tmp /= 10;
}
}
cout << ret;
return 0;
}
2.两个数组的交集(pass)
NC313 两个数组的交集
技能:哈希、双指针
2.1 解析
2.2 代码
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
bool hash[1001]={0};//创建哈希表
for(auto& x:nums1)
hash[x]=true;
vector<int> ret;//记录结果
for(auto& x:nums2)
{
if(hash[x])ret.push_back(x);
hash[x]=false;//将结果从哈希表中删除
}
return ret;
}
3.点击消除
AB5 点击消除
技能:字符串、栈、模拟
3.1解析
动态的消除
3.2代码
#include <iostream>
#include<string>
using namespace std;
int main()
{
string s,st;
cin>>s;
for(auto& e:s)
{
if(st.size()==0)st+=e;
else
{
auto t=st.back();
if(t==e) st.pop_back();//取栈顶元素与该字符比较。相等->消掉;不相等->入栈
else st+=e;
}
}
if(st.size()) cout<<st;
else cout<<0;
return 0;
}