问题一:
一个数组,“支配者”是在数组中出现频率超过一半的整数,
例如[3,4,3,2,-1,3,3,3]数值“3”出现过5次,5除以8大于0.5
所以数值“3”是一个支配者;
而在这个数组中的支配者出现在数组下标[0,2,4,6,7]
写一个函数,在给定的整数数组中找出支配者所在的任意一个数组下标,
如果一个数组中没有支配者返回-1;
解决方案:
public class Test {
public static void main(String[] args) {
int[] array = {3,4,3,2,-1,3,3,3};
List<Integer> list = search(array);
for(Integer i:list){
System.out.print(i+" ");
}
}
public static List<Integer> search(int[] array){
Map<Integer, List<Integer>> map =
new HashMap<Integer, List<Integer>>();
for(int i=0;i<array.length;i++){
//添加出现者和其出现位置
if(map.containsKey(array[i])){
map.get(array[i]).add(i);
}else{
List<Integer> list = new ArrayList<Integer>();
list.add(i);
map.put(array[i], list);
}
}
for(Integer i:map.keySet()){
double percent =
(double)map.get(i).size()/(double)array.length;
if(percent>0.5){
return map.get(i);
}
}
//如果一个数组中没有支配者返回-1
List<Integer> list = new ArrayList<Integer>();
list.add(-1);
return list;
}
}
提示一下:
“支配者”的个数只能是0或1
所以找出数组中出现次数最多的那个判断是不是“支配者”就可以了。
问题二:
找出一个数组中出现次数最多的那个元素
解决方案:
import java.util.*;
import java.util.*;
public class FindMostEle {
private static HashMap<String, Integer> map;
public static HashMap<String, Integer> mostEle(String[] strArray)
{
map = new HashMap<String, Integer>();
String str = "";
int count = 0;
int result = 0;
for(int i=0; i<strArray.length; i++)
str += strArray[i];
for(int i=0; i<strArray.length; i++){
String temp = str.replaceAll(strArray[i], "");
count = (str.length() - temp.length())/strArray[i].length();
if (count > result){
map.clear();
map.put(strArray[i], count);
result = count;
}
else if(count == result)
map.put(strArray[i], count);
}
return map;
}
public static void main(String []args)
{
String[] strArray ={"11","11","2","2","4","5","4"};
HashMap<String, Integer> result = mostEle(strArray);
ArrayList<Integer> c = new ArrayList<Integer>(result.values());
Set<String> s = result.keySet();
System.out.print ("一共"+ result.size() +"個元素.他們分別是:");
System.out.println(s);
System.out.println("出現次數是: "+ c.get(0) +"次.");
}
}
结果是:
一共3個元素.他們分別是:[2, 11, 4]
出現次數是: 2次.
=======================================================
以上是我从网上看到的,把它们放到一起,方便我和大家学习。向乐于帮助别人的牛人们 致敬!!!!
分享到:
相关推荐
在这个“一维数组题目8道题带答案”资源中,我们可以期待找到一系列与一维数组相关的练习题,旨在帮助学习者理解和熟练掌握在Unity C#环境中操作数组的技巧。 1. **数组的基本概念**: - 一维数组是线性数据结构,...
本资源“数组题目详解.rar”显然是一份针对数组相关编程题目的深入解析,包含源码、图像解释和文字说明,旨在帮助学习者更好地理解和解决数组相关问题。 首先,我们来探讨数组的概念。数组是存储相同类型元素的集合...
Java基础精品课05-数组录屏2.数组题目讲解1.mp4
Java基础精品课05-数组录屏3.数组题目讲解2.mp4
本篇练习题涵盖了数组的基本概念、操作和异常处理,下面是针对题目中涉及知识点的详细解释: 1. **数组的访问**:数组的元素通过下标来访问,下标从0开始,如`Array[0]`表示访问第一个元素。数组的长度可以通过`...
通过了解树状数组的原理和定义来解决有关给定一个由n个不同的整数组成的序列,最少需要交换多少次交换相邻的两个数,使其升序排列。
本资源提供了关于C语言数组的习题,涵盖了数组的基础概念、数组的声明和初始化、数组元素的访问和操作、数组在内存中的存储等方面的知识点。 数组的基本概念 1. 数组的大小是固定的,但所有数组元素的类型必须相同...
数组是编程语言中基本的数据结构之一,用于存储一组...通过这些数组基础题目,学生可以更好地理解数组的性质和操作,为更复杂的编程任务打下坚实的基础。实践中应注重逻辑思维、算法设计和错误处理,以提高编程能力。
从给定的C语言数组选择练习题中,我们可以总结出一系列关于C语言数组的重要知识点,这些知识点涵盖了数组的声明、初始化、引用以及相关的语法规范。 ### 数组元素引用 题目指出,在C语言中引用数组元素时,数组...
马鞍点39.c西电oj上的二维数组题目
根据题目要求,以下是从给定文件的信息中提取并解析的关键知识点: ### 1. 计算数组中小于平均值的元素个数 **题目描述**: 编写一个函数`int fun(int a[], int n, int b[])`,该函数接收一个整型数组`a[]`及其...
### C++习题 6数组与指针知识点详解 #### 一、基本概念与基础知识自测题解析 ##### 5.1 填充题 **5.1.1 数组定义时有三个要素:** - **数组名**:数组的名字,用来标识这个数组。 - **数组元素的类型**:数组中...
在上述文件中,我们看到了与编程基础相关的一些题目,它们涉及到了一维数组的基本操作和应用。接下来,我将详细解读文件中提及的各个知识点。 1. 与指定数字相同的数的个数 这个题目要求编写一个程序来计算在给定的...
Java作为一门广泛使用的编程语言,其在笔试和面试中经常出现的题目往往涵盖了语言的核心概念和技术。本资源主要聚焦于两个关键主题:Java数组和异常处理。数组是Java中的基本数据结构,而异常处理则是保证程序健壮性...
数组和指针练习题目(精选) 在编程语言中,数组和指针是非常重要的概念,它们的应用非常广泛,理解基础是非常必要的。本节将通过多种练习题目来加深对数组和指针的理解。 指针基础 指针是一种特殊的变量,它可以...
C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习 #include using namespace std; main() { int a[6][6],max,max_y,min,min_x; for(int i=1;i;i++) for(int j=1;j;j++) cin>>a[i][j]; for(int i...
题目 有下面这样的一个二维表,请将其使用二维数组输出 姓名 语文 数学 英语 张三 80 70 90 李四 40 50 90 王五 90 98 100 题解 与几位童鞋交流了一下发现他们都把汉字单独拿出来了,只用数组存储的...
c++数组练习题及答案。本套练习题包含了数组的各方面知识,题型包括判断题 填空题,编程题等
在这个Java数组练习题目中,涵盖了数组访问、复制、存储位置、查找算法、初始化、异常处理等多个知识点。 1) 数组的元素通过下标来访问,例如 `array[index]`,数组 Array 的长度可以通过 `.length` 属性获取。 2)...