华为机试2刷笔记

news/2023/5/28 7:32:57

华为机试

  • HJ2 计算字符个数
      • count_if函数用法详解
      • lambda表达式
      • 常函数
  • HJ3明明的随机数
    • 方法一:使用数组
    • 方法二:使用容器set
    • 方法三:使用容器vector+算法
  • HJ4 字符串分隔
    • 方法1:string的substr函数
    • 方法2:
    • 方法3:
  • HJ8 合并表记录
    • 方法一
    • 方法二
    • 思考:两种map的用法哪个更好
  • HJ9 提取不重复的数字
    • 方法一:使用vector
    • 方法二:使用unordered_set
      • 此处为什么使用unordered_set而不是使用set?
  • 知识点
    • math.h与algorithm
    • 万能头文件

HJ2 计算字符个数

题解看到一个比较新颖的解法:

#include <algorithm>
#include <iostream>
#include <string>using namespace std;int main()
{string s;getline(cin, s);char c = tolower(getchar());cout << count_if(s.begin(), s.end(), [c](char i) { return towlower(i) == c; }) << endl;
}

敲黑板

    1. 没有用过count_if()算法
    1. 第三个参数没有看懂,是lambda表达式?

count_if函数用法详解

lambda表达式

常函数

HJ3明明的随机数

方法一:使用数组

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{int n;while(cin>>n){int a;int count[501]={0};for(int i=0;i<n;i++){cin>>a;count[a]=1;}for(int i=0;i<501;i++){if(count[i]==1)cout<<i<<endl;}}return 0;
}

方法二:使用容器set

set容器可以自动实现去重和排序

#include <iostream>
#include <set>
using std::cin;
using std::cout;
using std::endl;
using std::set;
int main()
{int n;while(cin>>n){int a;set<int> mset;for(int i=0;i<n;i++){cin>>a;mset.insert(a);}set<int>::iterator it;for(it = mset.begin();it!=mset.end();it++){cout<<*it<<endl;}}return 0;
}

方法三:使用容器vector+算法

unique()是C++标准库函数里面的函数,其功能是去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序。
C++ Unique函数 详细


#include <iostream>
#include <vector>
#include <algorithm>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{int n;while(cin>>n){int a;vector<int> mvec;for(int i=0;i<n;i++){cin>>a;mvec.push_back(a);}sort(mvec.begin(),mvec.end());auto tmp=unique(mvec.begin(),mvec.end());mvec.erase(tmp,mvec.end());vector<int>::iterator it;for(it = mvec.begin();it!=mvec.end();it++){cout<<*it<<endl;}}return 0;
}

HJ4 字符串分隔

2022.01.16

方法1:string的substr函数

代码:

#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::cin;
using std::endl;
void Parse(string str)
{int len = str.size();if(len>8){string ms=str.substr(0,8);cout<<ms<<endl;Parse(str.substr(8,len-8));}else {int k = 8-len;for(int i=0;i<k;i++){str += '0';}cout<<str<<endl;}
}
int main() {string str;while(cin>>str){Parse(str);}
}
// 64 位输出请用 printf("%lld")

方法2:

#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{string str;while(getline(cin,str)){int len=str.size();if(len%8!=0){int k=8-len%8;str.append(k,'0');}// for(int i=0;i<k;i++)// {//    str+='0';//}len = str.size();for(int i=0;i<len;i+=8){cout<<str.substr(i,8)<<endl;}}return 0;
}

方法3:

cout的成员函数width()设置输出的宽度
cout的成员函数fill设置输出宽度不够时,填充字符’0’
流操作符left指定左对齐

#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::left;
int main()
{string str;while(getline(cin,str)){int len = str.size();for(int i=0;i<len;i+=8){cout.width(8);cout.fill('0');cout<<left<<str.substr(i,8)<<endl;}}return 0;
}

HJ8 合并表记录

方法一

#include <iostream>
#include <map>
using namespace std;int main() {int n;while (cin >> n) { // 注意 while 处理多个 caseint key,value;map<int,int> mmap;for(int i=0;i<n;i++){cin>>key>>value;mmap[key]+=value;}for(auto it=mmap.begin();it!=mmap.end();it++){cout<<it->first<<" "<<it->second<<endl;}}
}

方法二

#include <iostream>
#include <map>
using namespace std;int main() {int n;while (cin >> n) { // 注意 while 处理多个 caseint key,value;map<int,int> mmap;map<int,int>::iterator tmp;for(int i=0;i<n;i++){cin>>key>>value;tmp = mmap.find(key);if(tmp!=mmap.end()){mmap[key]=tmp->second+value;}else{mmap[key]=value;}}for(auto it=mmap.begin();it!=mmap.end();it++){cout<<it->first<<" "<<it->second<<endl;}}
}

思考:两种map的用法哪个更好

map用法深入思考。

HJ9 提取不重复的数字

方法一:使用vector

#include <iostream>
#include <vector>
using namespace std;int main() {int num;while (cin >> num) { // 注意 while 处理多个 caseint a;int stat[10]={0};vector<int> mv;while(num>0){a=num%10;stat[a]++;if(stat[a]==1){mv.push_back(a);}num = num/10;}for(auto it=mv.begin();it!=mv.end();it++)cout<<*it;cout<<endl;}
}
// 64 位输出请用 printf("%lld")

方法二:使用unordered_set

#include <iostream>
#include <algorithm>
#include <unordered_set>
using namespace std;int main() {int num;while (cin >> num) { // 注意 while 处理多个 casestring str=to_string(num);reverse(str.begin(),str.end());unordered_set<char> mset;string res;for(char c:str){if(mset.count(c)!=1){res+=c;mset.insert(c);}}cout<<stoi(res)<<endl;}
}

此处为什么使用unordered_set而不是使用set?

HJ3明明的随机数
其中的方法使用的是set,这两个场景有什么不同?

知识点

math.h与algorithm

math.h 是常用的数学库。例如 开平方,取绝对值,计算三角函数。
Algorithms 是Template库,处理某范围元素的函数,例如 for_each (对每个做…), count (统计出现的个数),partition (分两部分)。

万能头文件

#include <bits/stdc++.h>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4553743.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

[双语阅读]奥巴马和女儿同读少年历险小说

Obama reads prize-winning Life of Pi to daughter President Barack Obama answers questions during an interview with Reuters in the Oval Office at the White House in Washington, November 9, 2009. President Barack Obama may be in for a nasty surprise when h

人生,还没困难到非死不可

最近半个月&#xff0c;美国著名的Facebook公司&#xff0c;出了好几件大事。 第一件事&#xff0c;2019年9月19日&#xff0c;一名陈姓中国软件工程师在Facebook加州总部跳楼自杀。 第二件事&#xff0c;2019年10月4日&#xff0c;一名软件工程师在座位上猝死。 第三件事&a…

人性深处的探究与还原-《少年派的奇幻漂流》的四个故事

我找不到一个好的故事&#xff0c;去讲述人性的深处&#xff0c;不是怕肤浅就是怕无深意。又看了一边《少年派的奇幻漂流》&#xff0c;我觉得我找的到了最好的故事&#xff0c;一个227天海上漂流的故事。它能让你体会人性的最深处&#xff0c;并且历久弥新。《少年派的奇幻漂流…

Python如何解决“快手滑块验证码”(4)

前言 本文是该专栏的第32篇,后面会持续分享python的干货知识,记得关注。 很多时候,我们打开一个页面还没开始进行浏览,就跳出一个滑块验证的图片,需要拖到滑块至缺口处,才可以正常浏览。这对于我们正常人浏览页面来说,几乎没什么难度,但是当我们需要用到脚本去实现的时…

机器学习之Adaboost(机器学习技法)

逐步增强法&#xff08;AdaptiveBoosting&#xff09;引例 逐步增强法的主要思想就是拿着一堆很弱的模型可以合成一个非常强大的模型&#xff08;这一点与Bagging十分相似&#xff09;。 一个案例对算法的直观描述 在课堂上老师让小孩去辨识图中那些是苹果&#xff0c;由于小孩…

机器学习实战4-sklearn训练线性回归模型(鸢尾花iris数据集分类)

不贴图都没人看系列。。。。 线性回归推导&#xff1a; 上图求导部分有误,少些一个转置符号&#xff0c;更正为&#xff1a; 逻辑回归推导&#xff1a; &#xff08;公式中“ln”和“log”表示一个意思&#xff0c;都是以“e”为低的自然对数&#xff09;&#xff1a; 公式…

林轩田机器学习技法第八讲-Adaptive Boosting

上一讲学习了如何使用blending将很多的g结合起来&#xff0c;从而提升模型的整体的效果&#xff0c;已经如何使用boosting来从一个数据集中产生多个不同的新数据集。这一讲来看一下提升算法&#xff0c;主要看Adaptive Boosting这个算法。 我们有一个简单的例子引入&#xff1a…

C语言基于GTK+Libvlc实现的简易视频播放器

小编心语&#xff1a;现下&#xff0c;各种视频播放软件层出不穷&#xff0c;竞争也越演越烈&#xff0c;不知道大家有木有这个想法&#xff0c;小编有时在想能不能做一款属于自己的视频播放器呢~小编特意去实验楼&#xff0c;整理出了这篇关于如何实现简易视频播放器的博文。简…

如何使用亚马逊天气预报做出更好的预测

From resource planning and inventory control to financial management and budgeting, forecasting is used widely across different industries. Businesses invest heavily in hope of ascertaining future trends. The need for accurate and simple forecasting tools

基础计算机算法函数,算法基础入门概述

著名计算机科学家沃思(NiklausWirth)提出一个公式&#xff1a;算法 数据结构 程序&#xff0c;其中算法是程序的灵魂。01算法的定义及特性在数学和计算机科学/算学之中&#xff0c;算法/演算法/算则法(algorithm)为一个计算的具体步骤&#xff0c;常用于计算、数据处理和自动…

神经网络参数量和计算量,神经网络是参数模型吗

神经网络参数如何确定 神经网络各个网络参数设定原则&#xff1a;①、网络节点 网络输入层神经元节点数就是系统的特征因子(自变量)个数&#xff0c;输出层神经元节点数就是系统目标个数。隐层节点选按经验选取&#xff0c;一般设为输入层节点数的75%。 如果输入层有7个节点&…

不容易系列之(3)―― LELE的RPG难题

描述&#xff1a; 人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉&#xff0c;这可急坏了众多“Cole”&#xff08;LELE的 粉丝,即"可乐"&#xff09;,经过多方打探&#xff0c;某资深Cole终于知道了原因&#xff0c;原来&#xff0c;LELE最近研究起了…

点亮 LED

1.在 Linux 系统下&#xff0c;一切皆文件&#xff01;应用层如何操控底层硬件&#xff0c;同样也是通过文件 I/O 的方式来实现。设备文件通常在/dev/目录下&#xff0c;我们也把/dev 目录下的文件称为设备节点。设备节点并不是操控硬件设备的唯一途径&#xff0c;除此之外&…

什么是算法?读完这篇文章你就知道了

算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据&#xff0c;经过计算机程序的有限次运算&#xff0c;能够得出所要求或期望的终止状态或输出数据。 编程界的“Pascal之父”Nicklaus Wirth有一句人尽皆知的名言&#xff1a;“算法数据结构程序”…

一次性掌握机器学习基础知识脉络 | 百万人学AI

我们这次分享的题目叫做《机器学习第二次入门》。我先简单自我介绍一下&#xff0c;我现在在做算法工作&#xff0c;在阿里做高级算法专家&#xff0c;主要关注的领域是在推荐系统、机器学习、金融风控这些方面。 本次分享包括三个内容&#xff0c;先讲一下机器学习的知识脉络&…

用手机远程连接阿里云腾讯云服务器的方法

用手机连接云服务器&#xff0c;需要用到ssh远程连接工具&#xff0c;而阿里云app里面就有这个功能。连接起来还是比较方便的。 下面说说如何用ssh工具来连接阿里云服务器和腾讯云服务器。 详细过程也可以查看视频教程&#xff1a; 用手机远程连接云服务器的方法打开阿里云AP…

手撕Pytorch源码#2.Dataset类 part2

写在前面手撕Pytorch源码系列目的&#xff1a;通过手撕源码复习了解高级python语法熟悉对pytorch框架的掌握在每一类完成源码分析后&#xff0c;会与常规深度学习训练脚本进行对照本系列预计先手撕python层源码&#xff0c;再进一步手撕c源码版本信息python&#xff1a;3.6.13p…

2023跳槽最新面试题整理——JVM系列

今天是农历2022年腊月二十七了&#xff0c;和往常的春节假期、五一假期和十一假期一样都是团队中坚持到最后的一个。没几天也要快过年了&#xff0c;我先提前向大家拜个早年——祝大家兔年大吉&#xff0c;新春快乐&#xff0c;财源滚滚&#xff0c;万事如意。 今年从十一…

主动变被动9个例句_学会9个机柜布线小技巧,老板主动涨工资

在整个网络布线工程中&#xff0c;机柜布线是一项非常讲究的工作。如何把机柜布线做得规整美观&#xff0c;是对我们弱电新手职业技能的一大考验。机柜规范布线的重要性机柜系统性地解决了计算机应用中的高密度散热、大量线缆附设和管理、大容量配电及全面兼容不同厂商机架式设…

要点分析:用SQL+Excel监控数据库性能

点击蓝色“有关SQL”关注我哟加个“星标”&#xff0c;天天与8000人一起快乐成长人人都会写SQL&#xff0c;但某些人的SQL&#xff0c;执行起来就是慢。要让运营等你20分钟出报表&#xff0c;今年你的KPI可就难了。可&#xff0c;谁没傻过呢&#xff1f;我刚毕业写代码那会&…