《N诺机试指南》(一)数组妙用
题目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诺机试指南》(一)数组妙用的更多相关文章
- 《N诺机试指南》(五)进制转化
进制转化类题目类型: 代码详解及注释解答: //进制转化问题 #include <bits/stdc++.h> using namespace std; int main(){ // 1 ...
- 《N诺机试指南》(二)C++自带实用函数
1.排序sort函数: 2.查找: 实例: 3. 队列:
- 《N诺机试指南》(三)STL使用
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
- 《N诺机试指南》(七)排版类问题
1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星 空格数 ...
- 《N诺机试指南》(八)日期、字符串、排序问题
1.日期问题: 输入: 例题: 代码: #include <stdio.h> #include <bits/stdc++.h> struct node{ int year, m ...
- 机试指南第二章-经典入门-Hash的应用自解
Hash的应用: Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用. 例2.5 统计同成绩学生人数 Hash解法AC代码:(一 ...
- 王道机试指南题解(C/C++版)
第 2 章 经典入门 一 排序 例 2.1 排序 代码 2.1 冒泡排序(时间复杂度 \(O(n^2)\)) #include <iostream> using std::cin; usi ...
- java机试要点
Java机试准备 一般结构: import java.util.Scanner; public class Main{ public static void main(String[] args) ...
- 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
package 华为机试; //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的 ...
随机推荐
- JavaSE复习~开发环境的搭建 与 HelloWorld
JDK的下载 访问Oracle官网,下载jdk,目前来说用的最多的是 8 版本 https://www.oracle.com/technetwork/java/javase/downloads/ind ...
- ETCD成员维护
# For each machine TOKEN=my-etcd-token-1 CLUSTER_STATE=new NAME_1=etcd-node-1 NAME_2=etcd-node-2 NAM ...
- LeetCode 234. Palindrome Linked List(判断是否为回文链表)
题意:判断是否为回文链表,要求时间复杂度O(n),空间复杂度O(1). 分析: (1)利用快慢指针找到链表的中心 (2)进行步骤(1)的过程中,对前半部分链表进行反转 (3)如果链表长是偶数,首先比较 ...
- linux文件的查找和检索
1)按文件属性查找 1)文件名: find + 查找的目录 + -name + "文件名" 文件名中可以使用通配符:*号表示多个,?号表示一个 2)文件大小: fin ...
- 学习 Python,怎能不懂点PEP 呢?
或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大 ...
- 分布式应用监控:SkyWalking 快速接入实践
分布式应用,会存在各种问题.而要解决这些难题,除了要应用自己做一些监控埋点外,还应该有一些外围的系统进行主动探测,主动发现. APM工具就是干这活的,SkyWalking 是国人开源的一款优秀的APM ...
- Win32 开发记录
Typedefs LPCSTR = char* LPCWSTR = wchar_t* Webpages Control reference: https://docs.microsoft.com/en ...
- MySQL(window10)加载配置文件的顺序
mysql加载配置的顺序为:(mysql --help中有详细的说明) C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:***\my ...
- 3_03_MSSQL课程_Ado.Net_数据导入
数据库数据导出和导入 思路: --思路: 1.找到文件 2.读取文件 3.第一行 忽略 4.insert using System; using System.Collections.Generic; ...
- JavaWeb项目http请求报错:Error parsing HTTP request header
详细报错信息如下图: 原因:一一排查后,发现是http的请求中,包含了 “ | ” 竖线特殊符号:而并不是网上说的请求url太长了的原因. 解决方法:把 | 替换为 @