首页 > 其他分享 >华为笔试0828 元素消除

华为笔试0828 元素消除

时间:2024-09-09 14:26:41浏览次数:12  
标签:0828 笔试 cout nums int 元素 cin 华为 消除

 

第二题

题目:元素消除

给定一个整数数组nums,同时给定一个整数interval。指定数组nums中的某个元素作为起点,然后以interval为间隔递增,如果递增的数(包含起点)等于nums中的元素,则将数组nums中对应的元素消除,返回消除元素最多的起点元素。如果消除的元素同样多,则返回最小的起点元素。

输入描述

第一行输入整数数组的长度n

第二行输入长度为n的整数数组nums

第三行输入整数interval1 <= n <= 10^5

0 <= nums[i] <= 10^8

0 <= interval <= 10^5

输出描述

起点元素的最小值。

样例输入一

6 4 5 7 1 1 2 3

样例输出一

1

说明

输入给定的间隔为3,如果以元素1为起点,则可以消除1, 4, 7, 10,…这些元素,因此,我们可以消除给定数组中的4, 7, 1, 1这4个元素,以其他元素为起点也没有办法消除更多元素了,因此返回1。

样例输入二

5 4 5 7 1 2 50

样例输出二

1

说明

输入给定的间隔为50,如果以元素1为起点,则可以消除1,51,101这些元素,因此,我们可以消除给定数组中的1这个元素,同理,如果以2为起点,则可以消除2,52,102这些元素,因此,我们可以消除给定数组中的2这个元素,以此类推,无论以哪个元素作为起点,都只能消除1个元素,因此返回最小的起点元素1。

 

思路:

由于给定间隔interval是固定的,很容易想到符合条件的数之间是同余的关系。注意到数据范围是1e6,那么就可以使用unordered_map实现的哈希表。

处理输入,然后对于每个序列中的数,将nums[i]对interval取模后的数记为t,利用哈希表统计t的数值(即余数同为t的数的个数)。更新anscnt=max(anscnt,hashmap[t])。

最后扫描一遍,如果某个数余数的哈希值为anscnt且该数的大小小于ans,则更新ans。(题目要求所有同余的数要输出最小的数)。

我用了ios_base::sync_with_stdio(false);和cin.tie(NULL);语句来提高cin和cout的速度,确保输入格式统一。

ios_base::sync_with_stdio(false);的作用:C++标准库默认会同步C++的标准I/O和C的标准I/O。关闭同步之后‘cin’和‘cout’将不再与C标准库的‘scanf’和‘printf’同步,可以减少同步开销,从而提高性能。

cin.tie(NULL);的作用:默认情况下‘cin’与‘cout’是绑定的,接触绑定后,‘cin’和‘cout’将不再相互依赖,减少不必要的刷新操作,从而提高性能。

奇怪的问题:用不用cout.tie(NULL);? 

回答:‘cout’通常不需要解除与其他流的绑定,因为‘cout’的输出操作不依赖于‘cin’的刷新。

代码:

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int Work(int&n,vector<int>&nums,int&k){
 4     unordered_map<int,int>hashmap;
 5     int anscnt=0,ans=1e9;
 6     for(int i=1;i<=n;i++){
 7         int t=nums[i]%k;
 8         hashmap[t]++;
 9         anscnt=max(anscnt,hashmap[t]);
10     }
11     for(int i=1;i<=n;i++)
12         if(hashmap[nums[i]%k]==anscnt)
13             ans=min(ans,nums[i]);
14     return ans;
15 }
16 int main(){
17     ios_base::sync_with_stdio(false);
18     cin.tie(NULL);
19     int n;
20     cin>>n;
21     vector<int>nums(n+1);
22     for(int i=1;i<=n;i++) cin>>nums[i];
23     int interval;
24     cin>>interval;
25     cout<<Work(n,nums,interval);
26     return 0;
27 }

 


by:AlenaNuna

 

标签:0828,笔试,cout,nums,int,元素,cin,华为,消除
From: https://www.cnblogs.com/AlenaNuna/p/18404488

相关文章

  • 华为笔试——输出单向链表中倒数第k个节点
    描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{    int m_nKey;    ListNode* m_pNext;};正常返回倒数第k个结点指针,异常返回空指针.要求:(1)正序构建链表;(2)构建后要忘记链表长度......
  • MySQL面试笔试题(基础题)
     1、取得每个部门最高薪水的人员的名称selectenamefromempe,(selectdeptno,max(sal)max_salfromempgroupbydeptno)each_dept_max_salwheree.deptno=each_dept_max_sal.deptnoande.sal=each_dept_max_sal.max_sal;2、哪些人的薪水在部门的平均薪水之上select......
  • 【2024华为杯E题】中国研究室数学建模竞赛E题思路+代码+论文
    订阅本专栏,认真钻研,保省级及以上奖项!若无获奖,本博主免费提供任意两份本博客初级版专栏代码!......
  • 【2024华为杯B题】中国研究室数学建模竞赛B题思路+代码+论文
    订阅本专栏,认真钻研,保省级及以上奖项!若无获奖,本博主免费提供任意两份本博客初级版专栏代码!......
  • 华为智慧农业解决方案
    物联网有望成为促进农业提产、实现供需平衡的关键使能技术。智慧农业采用了基于物联网的先进技术和解决方案,通过实时收集并分析现场数据及部署指挥机制的方式,达到提升运营效率、扩大收益、降低损耗的目的。可变速率、精准农业、智能灌溉、智能温室等多种基于物联网的应用将推动农......
  • 华为地图--
    华为地图前言一、MapKit(地图服务)二、具体实现1.创建地图1.1导入MapKit相关模块1.2新建地图初始化参数mapOptions,设置地图中心点坐标及层级1.3调用MapComponent组件,传入mapOptions和callback参数,初始化地图2.设置地图属性3.绘制[折线](https://developer.huawei.......
  • 6、【实战中提升自己】华为 华三中小型企业网络架构搭建 【无线架构之无线业务部署(无
     1 拓扑与说明         某公司的网络架构,这样的架构在目前的网络中是在常见的,假设您接收一个这样的网络,应该如何部署,该实战系列,就是一步一步讲解,如何规划、设计、部署这样一个环境,这里会针对不同的情况给出不同的讲解,比如拓扑中有2个ISP,假设客户需求是,想实现主备的......
  • 平安银行25届秋招金融类专业笔试/测评通关攻略题库考什么
    平安银行测评和笔试有什么区别?平安测评【平安IQ新、16PF】侧重个性扫描,主要是对能反应个体人格因素的测试评估,考察参考人的性格特点。平安金融类笔试【60分钟60题,前程无忧考试系统】侧重综合能力考察,考试内容包括金融/银行行业的基础知识、常识判断、言语理解与表达、数量关......
  • 5、【实战中提升自己】华为 华三中小型企业网络架构搭建 【无线架构之无线业务部署(包
     1 拓扑与说明         某公司的网络架构,这样的架构在目前的网络中是在常见的,假设您接收一个这样的网络,应该如何部署,该实战系列,就是一步一步讲解,如何规划、设计、部署这样一个环境,这里会针对不同的情况给出不同的讲解,比如拓扑中有2个ISP,假设客户需求是,想实现主备的......
  • 828华为云征文|华为云Flexus X实例MySQL性能加速评测及对比
    目录前言一、Flexus云服务器X介绍1.1Flexus云服务器X实例简介1.2Flexus云服务器X实例特点1.3Flexus云服务器X实例场景需求二、Flexus云服务器X购买2.1FlexusX实例购买2.2购买MySQL加速镜像2.3重置密码2.4 登录服务器三、FlexusX实例加速MySQL测试3.1sys......