C++笔试强训day1

server/2024/9/23 14:33:57/

目录

1.数字统计

2.两个数组的交集

3.点击消除


1.数字统计

链接

题目非常简单,不做赘述:就是单纯利用循环逐个%2判断是否==0

详细代码:

#include <iostream>
using namespace std;
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int l, r;cin >> l >> r;int cnt = 0;for (int i = l; i <= r; ++i) {int tmp = i;while (tmp) {if (tmp % 10 == 2)cnt++;tmp /= 10;}}cout << cnt << endl;
}
// 64 位输出请用 printf("%lld")

(前三行只是为了降低cin 和 cout 的处理时间)

2.两个数组的交集

链接

我一开始的思路是找出相同元素,然后再写个去重函数去重就ok,但是这样有点麻烦,可以直接用哈希表快速解决(主要是时间复杂度也低)。

1.创建两个哈希表s1  s2,s1遍历第一个数组中的元素并存储,注意,用emplace(当然,用insert也可以,不过需要加if判断,别让哈希存储相同元素)

上端大概的意思就是emplace只有在set中不存在这个元素的时候才会插入

2.然后set2遍历第二个数组,如果set2中已有该元素,则跳过,若没有,先存储元素到set2中,接着判断第二个数组中的元素在set1中是否存在,存在则直接存入ret(需要返回的数组)

详细代码:

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param nums1 int整型vector* @param nums2 int整型vector* @return int整型vector*/unordered_set<int> s1;unordered_set<int> s2;vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {int len1 = nums1.size();int len2 = nums2.size();vector<int> ret;for(int num : nums1)s1.emplace(num);for(int num : nums2){if(s2.count(num) == 1) {}else{if(s1.count(num) == 1)ret.push_back(num);s2.emplace(num);}}return ret;}
};

3.点击消除

链接

这道理可以直接理解为消消乐,利用栈的特性,从字符串头开始遍历,一个一个进栈,若发现s[i] = st.top(),就删除栈顶,并且遍历下一个数。

到最后将栈里面的数一个一个取出+=到ret(需要返回的字符串)中,最后reverse(逆置)就行。

详细代码:

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>using namespace std;int main() {string s;cin >> s;stack<char> st;string tmp;for (auto c : s) {if (st.empty() || c != st.top())st.push(c);elsest.pop();}if (st.empty())cout << 0 << endl;else {while (!st.empty()) {tmp += st.top();st.pop();}reverse(tmp.begin(), tmp.end());cout << tmp << endl;}return 0;
}

http://www.ppmy.cn/server/14071.html

相关文章

【注释和反射】类加载的过程

继上一篇博客【注释和反射】获取class类实例的方法-CSDN博客 目录 三、类加载的过程 例子 三、类加载的过程 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载是一个将类的字节码文件从文件系统或其他来源加载到JVM的内存中&#xff0c;并将其转换为类或接口的…

让多个域名都可以访问一个wordpress网站

WordPress在安装后会默认绑定当前的域名&#xff0c;如果把多个域名都绑定到wordpress网站后&#xff0c;在通过这些域名访问时&#xff0c;还是会跳转到安装时候的域名。 有没有什么办法可以&#xff0c;让各自域名&#xff0c;访问这个wordpress网站&#xff0c;都显示的是当…

美团财务科技Java后端一面:面向对象、类加载过程、全限定类名相同的类是否可以同时被加载

更多大厂面试内容可见 -> http://11come.cn 美团财务科技Java后端一面&#xff1a;面向对象、类加载过程、全限定类名相同的类是否可以同时被加载 如何理解面向对象&#xff1f; 面向对象 是具有对象概念的编程范式&#xff0c;面向对象将程序实现分为了一个个独立的对象&…

408数据结构,怎么练习算法大题?

其实考研的数据结构算法题是有得分技巧的 得分要点 会写结构定义&#xff08;没有就自己写上&#xff09;写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 以上这四步是完成一道算法题的基本步骤&#xff0c;也是其中得分的主要地方就是后面两步。但是前面两…

通过WSL在阿里云上部署Django项目MySQL

前端用Vue&#xff0c;后端用Django&#xff0c; nginx&#xff0c;Mysql 参照&#xff1a; 通过WSL在阿里云上部署Vue项目_阿里云 wsl-CSDN博客 阿里云重登录 采用Ubuntu系统&#xff0c; apt update #检查是否已经安装 mysql --version #检查是否已经安装mysql systemct…

LeetCode:2385. 感染二叉树需要的总时间(DFS Java)

目录 2385. 感染二叉树需要的总时间 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS 原理思路&#xff1a; 2385. 感染二叉树需要的总时间 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不相同 。另给你一个整数 start 。在第…

[VIM] MiniBufExplorer插件

我们在开发环境或者debug环境的时候&#xff0c;经常需要在不同的路径下的不同file中切换&#xff0c;一种可行的方法是开多个vim窗口&#xff0c;并排放着&#xff0c;需要开哪个的时候点哪个&#xff0c;但是打开的file很多的时候就不太方便了&#xff0c;这里推荐一个vim 插…

C++:模板(初级)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;模板&#xff08;初级&#xff09;》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞…