题目A:

大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序

那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针i指向数组a,j指向原数组b,初值都是0,如果a[i] == b[j],是重复元素,那么i++,continue,否则b[++j] = a[i++]

这个有点复杂,有没有简单做法?

  数不多:可以利用数组的标记特性:定义数组a,全部赋值为0,然后输入为k,则令a[k]++,最后打印a[k]>0的即可,见代码1

  数很多,范围很大:可以用Map存储,key作为数字,对应value作为出现次数,找到重复的取出对应value+1,见代码2

           也可以用vector存储,遍历数组如果不在vector里那么就加入到vector里并且赋值为1,如果在则v[i]+1

代码1:

#include <bits/stdc++.h>
using namespace std; int a[105] = {0};//注意尽量把数组定义在全局,方便很多 int main(){
int n,x;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &x);
a[x]++;
} for(int i=0; i<n; i++){
if( a[i]>0 ){
printf("%d:出现次数%d\n", i, a[i]);
}
} return 0;
}

 结果:

代码2:

public class CountNumber{

    public static void mian(String[] args){
int[] arr = {1,2,3,4,8,2,2,5,3,1,2,4,5,2}
int[] ans = maxTimsx(arr);
System.out.println("数字:" + ans[0] + "出现" + ans[1] + "次")
} public static int[] maxTimes(int[] arr){
if(arr == null || arr.length < 1){
return null;
}
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>(); int times = 0;
int number = 0;
    
    //缺少一个步骤:先把arr数组排序
for(i=0;i<arr.length;i++){
if(map.get(arr.[i]) == null){//没有就存进map里去
map.put(arr[i],1)//初始value为1
}
}else{
integer value = map.get(arr[i]) + 1;//有说明有重复的,加1
map.put(arr[i],value)
if(value > times){//找出最大的
times = value;
number = arr[i];
}
} return new int[] {number,times};
}
}

题目A plus版本:

解析:可以新加一个数组,用来存储拥有相同数字个数i的最大那个值

代码:

《N诺机试指南》(一)数组妙用的更多相关文章

  1. 《N诺机试指南》(五)进制转化

    进制转化类题目类型: 代码详解及注释解答:  //进制转化问题 #include <bits/stdc++.h> using namespace std; int main(){ // 1 ...

  2. 《N诺机试指南》(二)C++自带实用函数

    1.排序sort函数: 2.查找:  实例:  3. 队列:

  3. 《N诺机试指南》(三)STL使用

    1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...

  4. 《N诺机试指南》(七)排版类问题

    1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星     空格数 ...

  5. 《N诺机试指南》(八)日期、字符串、排序问题

    1.日期问题: 输入: 例题: 代码: #include <stdio.h> #include <bits/stdc++.h> struct node{ int year, m ...

  6. 机试指南第二章-经典入门-Hash的应用自解

    Hash的应用: Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用. 例2.5 统计同成绩学生人数 Hash解法AC代码:(一 ...

  7. 王道机试指南题解(C/C++版)

    第 2 章 经典入门 一 排序 例 2.1 排序 代码 2.1 冒泡排序(时间复杂度 \(O(n^2)\)) #include <iostream> using std::cin; usi ...

  8. java机试要点

    Java机试准备 一般结构:   import java.util.Scanner; public class Main{ public static void main(String[] args) ...

  9. 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

    package 华为机试; //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的 ...

随机推荐

  1. WLC3504 HA配置

    1.WLC3504 HA连接方式 2.说明 WLC3504可以支持HA,AP SSO和Client SSO. 也是通过RP端口去连接,从active到standby-hot设备同步设备配置包括mana ...

  2. IO课堂测试

    一,用户需求 英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?<哈利波特与魔法石> 中最常用的短语是什么,等等. (1)要求1: ...

  3. 杭电 1203 I NEED A OFFER!

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  4. Fedora26下Mysql改密码Unknown column 'password' in 'field list'

    本意向修改一个用户的密码,网上搜到的命令为如下 1 mysql> update user set password=password(“新密码”) where user=”用户名”; 执行后报错 ...

  5. elk单机安装部署

    es 下载地址:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.t ...

  6. 二十 Struts2的标签库,数据回显(基于值栈)

    通用标签库 判断标签:<s:if>.<s:elseif>.<s:else> 循环标签:<s:iterator> 其他常用标签: <s:proper ...

  7. 搭建私有CA并实现证书颁发

    一.搭建私有CA服务器 1.安装包 # yum -y install openssl 2.生成密钥对儿 # cd /etc/pki/CA # (umask 077;openssl genrsa -ou ...

  8. 【PAT甲级】1020 Tree Traversals (25 分)(树知二求一)

    题意: 输入一个正整数N(N<=30),给出一棵二叉树的后序遍历和中序遍历,输出它的层次遍历. trick: 当30个点构成一条单链时,如代码开头处的数据,大约1e9左右的结点编号大小,故采用结 ...

  9. springboot 不停服动态更新定时任务时间(转)

    转 https://blog.csdn.net/u012129558/article/details/80834303 Spring框架自3.0版本起,自带了任务调度功能,好比是一个轻量级的Quart ...

  10. freemarker作为PDF模板实现下载功能

    freemarker 文件 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...