我创建一个数组,然后以五个为一组打印。然后,我希望能够按5搜索数组以查看是否有重复项。我已经尝试过,但我只能想到一种按每个值而不是五个值进行搜索的方法。如果有人能指出我正确的方向,那就太好了。谢谢。
public class findPat {
static int arr [] = new int [10];
static int st = 1;
static int end = 56;
static double t1;
static double t2;
public static void main(String[] args){
t1=System.currentTimeMillis();
for(int n=0; n<100; n++){
for (int i=0; i<arr.length; i++)
arr[i]= (int) (Math.random()* (end-st +1)) +st;
for (int i=0; i<5; i++){
if (i%5==0)
System.out.println();
System.out.print("\t" + arr[i]);}
}
t2=System.currentTimeMillis();
System.out.println();
System.out.println();
System.out.println("\t" + "Total run time is " + ((t2-t1)) + "ms");
}
}
控制台看起来像这样:
18 22 42 14 38
2 2 14 9 8
6 29 38 37 33
6 41 41 27 7
20 41 38 11 50
16 17 41 21 19
40 33 9 10 7
12 54 10 30 36
但是,每一行都在同一阵列中,但一次只打印5。控制台将不只是那几行。我希望能够搜索数组,并对照其余每一行进行检查,以查看它出现了多少次(如果有的话)。
您可以使用来实现Hashtable
。我以您的代码为基础,编写了一个示例实现,但是在不知道您要执行的操作的情况下,我无法判断这是否是您想要的。
import java.util.Hashtable;
public class findPat {
static final int COUNT = 100;
static Hashtable<String, Integer> compareSet = new Hashtable<String, Integer>();
static String groupInteger = "";
static int arr [] = new int [5];
static int st = 1;
static int end = 56;
static double t1;
static double t2;
public static void main(String[] args) {
t1=System.currentTimeMillis();
for(int n = 0; n < COUNT; n++){
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()* (end - st + 1)) + st;
}
for (int i = 1; i <= 5; i++) {
groupInteger += arr[i-1];
System.out.print("\t" + arr[i-1]);
if (i % 5 == 0) {
System.out.println();
if (compareSet.containsKey(groupInteger)) {
System.out.println("duplicate found");
int currentCount = compareSet.get(groupInteger);
compareSet.put(groupInteger, currentCount + 1);
} else {
compareSet.put(groupInteger, 1);
}
groupInteger = "";
}
}
}
t2=System.currentTimeMillis();
System.out.println();
System.out.println();
System.out.println("\t" + "Total run time is " + ((t2 - t1)) + "ms");
}
}
该代码通过添加唯一的随机数集来跟踪它们(创建一个键值,该键值对于具有相同顺序的相同值的每个集都是相同的,级联字符串负责此操作)。
您的代码在我的系统上运行了13秒,而我的则需要17秒。现在,如果运行时至关重要,您可能需要研究哈希技术。但是我不确定您是否能够节省很多,因为您将不得不添加一些额外的代码,这将花费更多的时间。
问题内容: 我在以下几行中遇到问题,其中未初始化的数组/没有元素。 有什么可能的解决方案? 问题答案: 由于尚未初始化,因此没有长度,其值为。但是,编译器甚至不允许您按 原样 编译该代码,从而引发以下错误: 变量car可能尚未初始化 。 您需要先对其进行初始化,然后才能使用: 如果需要初始化一个空数组,可以使用以下命令: 如果需要使用特定的大小初始化它,以便填充某些位置,可以使用以下命令: 但是,
本文向大家介绍初始化一个长度为5的空数组的版本相关面试题,主要包含被问及初始化一个长度为5的空数组的版本时的应答技巧和注意事项,需要的朋友参考一下 初始化一个长度为5的空数组的版本 不初始化数组长度的版本
本文向大家介绍如何在C#中查找StringBuilder的长度?,包括了如何在C#中查找StringBuilder的长度?的使用技巧和注意事项,需要的朋友参考一下 要在C#中查找StringBuilder的长度,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-
问题内容: 如何找到二维数组中的行和列数? 例如, 应该显示为3行2列。 问题答案: 像这样: 假定所有子列表具有相同的长度(也就是说,它不是锯齿状的数组)。
本文向大家介绍在JavaScript中查找句子中倒数第二个单词的长度,包括了在JavaScript中查找句子中倒数第二个单词的长度的使用技巧和注意事项,需要的朋友参考一下 句子只是一个字符串,其中包含由空格连接的字符串(称为单词)。我们需要编写一个JavaScript函数,该函数接受一个这样的句子字符串,并计算该字符串倒数第二个单词中的字符数。如果字符串包含的单词数不超过2个,则我们的函数应返回0
我们将如何测试数组中每个子数组的长度等于子数组元素之和的P倍的所有子数组组合。 一个简短的示例:编辑: 期望的结果: 长度=2,P*元素之和=1。子序列是 编辑约束: 这些问题属于什么样的问题集(例如:NP-hard?)?语言:C#