C++笔试练习笔记 【2】: 数字统计 BC153 两个数组的交集 NC313 点击消除 AB5

本文主要是介绍C++笔试练习笔记 【2】: 数字统计 BC153 两个数组的交集 NC313 点击消除 AB5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 数字统计
    • 分析题目
    • 代码部分
  • 两个数组的交集
    • 题目分析
    • 代码部分
  • 点击消除
    • 题目解析
    • 代码部分

数字统计

在这里插入图片描述

分析题目

这个题涉及到两个知识点,就是枚举和数字的拆分
那么我的思路是进行遍历,拆分数字判断二的个数,枚举进行计数
那么数字的拆分就是通过%和/进行的
在这里插入图片描述

代码部分

#include <iostream>
using namespace std;int main() {int a=0,b=0,mark=0;cin >> a >> b;for(int i=a;i<=b;i++){int n=i;while(n){if(n%10==2) mark++;n=n/10;}}cout << mark << endl;
}

两个数组的交集

在这里插入图片描述

题目分析

刚看到这个题想到用哈希表解决,但是这个题的数据不大所以如果我们用容器来解决耗时所以我想到了用数组模拟一个哈希表就能快速解决
这个题还有一个点就是例如

[1 ,2 ,2 ,2 ,2 ] 和 [ 8 ,2 ,2 ,2 ,6]

我们的返回值应该是 [ 2 ] 而不是 [ 2 ,2 ,2 ]
所以这也是我们用数组来模拟哈希表的优势,我们在每次成功判断一个数是公共的之后便把这个数从哈希表中删除,就不怕重复的问题了

代码部分

#include <algorithm>
class Solution {bool hash[1001]={0};//开一个bool型数组来模拟哈希表
public:  vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector <int> an;//记录答案for(auto a:nums1){hash[a] = true;}for(auto a:nums2){if(hash[a]){an.push_back(a);hash[a]=false;//每次发现公公数记录后从哈希中删除}}return an;}
};

点击消除

在这里插入图片描述

题目解析

这道题我想到的是用栈进行解决
以示例1为例:
首先就是创建栈,之后a进栈,之后判断下一个是否与a相同相同消除不同进栈如图:
在这里插入图片描述
当下一个与栈顶相同时进行消除只需把栈顶元素pop即可如图:
在这里插入图片描述
虽然用栈来实现是完全没有问题的,但是在最后输出时由于栈的特性所以数据是反的会有点麻烦,所以我用string来模拟栈来实现功能,并且输出的时候直接输出即可

代码部分

#include <iostream>
using namespace std;
#include <string>int main() {string str;cin>>str;string an;for(int i=0; i < str.size(); i++){if(an.back()==str[i])//要是匹配【栈顶元素等于下一个要入栈的元素】即消除【出栈】{an.pop_back();}else {an.push_back(str[i]);//正常就入栈}}if(an.size()!=0)//判断最后剩余的是否为空
{cout << an;//不为空输出消除后的结果
}
else {cout << 0 <<endl;//空输出0,题目规定
}return 0;}
// 64 位输出请用 printf("%lld")

这篇关于C++笔试练习笔记 【2】: 数字统计 BC153 两个数组的交集 NC313 点击消除 AB5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954549

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用