如何在单个数组中查找长度为5的副本。爪哇

浏览:49日期:2024-03-04
如何解决如何在单个数组中查找长度为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秒。现在,如果运行时至关重要,您可能需要研究哈希技术。但是我不确定您是否能够节省很多,因为您将不得不添加一些额外的代码,这将花费更多的时间。

解决方法

我创建一个数组,然后以五个为一组打印。然后,我希望能够按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。控制台将不只是那几行。我希望能够搜索数组,并对照其余每一行进行检查,以查看它出现了多少次(如果有的话)。

相关文章: