当前位置: 首页 > 面试题库 >

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

柳威
2023-03-14
问题内容

我创建一个数组,然后以五个为一组打印。然后,我希望能够按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#