java 关于数组 计数的面试题
题目:用面向对象的方法求出数组中重复 value 的个数 : 1 出现:1 次3 出现:2 次8 出现:3 次2 出现:4
提供数组 : int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5} ;
答案:
// 面试题,给定一个数组,按照顺序将 元素的重复次数打印出来
int array [] = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5} ;
Arrays.sort(array); // 排序
int count = 0 ; // 初始化计数器
int temp = array[0] ; // 初始化一个变量 此时为1(数组第一个元素)
//定义一个map,key为元素,value为次数。利用map 同样的key 会覆盖掉前面的value的特性
Map<Integer,Integer> map = new HashMap<Integer, Integer>() ;
for (int i=0 ; i<array.length ; ++i){
//排完序,相同的元素会在一块,遇到不相同的 进行新的计数
if (temp != array[i]){
temp = array[i] ;
count = 1 ;
}else { //然后遇到重复的 计数器+1,
count ++ ;
}
map.put(array[i],count) ;
}
// 将 map遍历出来
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+"出现了:"+entry.getValue());
}
结果:
1出现了:3
2出现了:2
4出现了:5
5出现了:4
6出现了:1
7出现了:1
8出现了:2
88出现了:1
9出现了:1
77出现了:1
解题思路:先进行排序,这样重复的元素会排到一块。然后 将索引为0的元素赋值给 temp,然后循环遍历,如果temp == 遍历出来的值,计数器+1,如果 != 的话,就是新的不与上面的重复的元素,开始新的计数,然后将本次循环的元素 作为key,计数作为值,存到map中(map有个特性,同样的key会覆盖掉原来的value,这样就会一直覆盖到最新的重复数,再进行下一个新key的计数)。 最后将map 遍历打印出来,结束。
java 关于数组 计数的面试题的更多相关文章
- 【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
数组没有length()这个方法,有length的属性.String有有length()这个方法. int a[]; a.length;//返回a的长度 String s; s.length();// ...
- Java并发编程75道面试题及答案
1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...
- [Java 基础]数组
数组初始化 定义数组语法格式 定义数组有两种方式,如下两种格式是等价的: int[] a1; int a1[]; 注:在C/C++中,不支持第一种格式.但是,推荐使用这种方式,因为这样似乎更合理,声 ...
- Java的Exception和Error面试题10问10答
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- Java线程相关的热门面试题
---恢复内容开始--- 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...
- Java排序之计数排序
Java排序之计数排序 计数排序思路 计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[m,n].这个时候可以使用一个n-m+1长度的数组,待排序的数组就可以散在这个数组上,数组 ...
- Java:多线程计数
Java:多线程计数 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 ...
- java中数组的相关知识
1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
随机推荐
- imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区
在oracle里创建表,报出错: ORA-01658: 无法为表空间space中的段创建 INITIAL 区: 或者: ORA-01658: unable to create INITIAL exte ...
- ubuntu 编译并安装resin3.1.12+nginx1.2.6
一.先装jdk 先建立如下两个目录: mkdir /usr/lib/jvm mkdir /usr/lib/jvm/java 把jdk-6u26-linux-x64.bin文件传到上面目录下: chmo ...
- lunix tomcat重启脚步
[wlcf@iZbp12oby5qekkz14dlokeZ ~]$ cat restart_tomcat #!/bin/shif [ $# != 1 ] ; then echo "USAGE ...
- JSSDK用法
参照微信官方文档,调试成功之后总结如下: 步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 步骤二: ...
- 面试题:filter过滤器 listener 监听器 案例有点用
1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行 ...
- ROS naviagtion analysis: costmap_2d--LayeredCostmap
博客转自:https://blog.csdn.net/u013158492/article/details/50490490 在数据成员中,有两个重要的变量:Costmap2D costmap_和 s ...
- 认识Session
Session在不同环境下的不同含义 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session ...
- Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
报错:Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L 出错原因: ...
- Python2.X和Python3.X文件对话框、下拉列表的不同
Python2.X和Python3.X文件对话框.下拉列表的不同 今天初次使用Python Tkinter来做了个简单的记事本程序.发现Python2.x和Python3.x的Tkinter模块的好多 ...
- angular 工厂模式依赖注入
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; ...