如何在java中的整数数组中找到重复的整数序列?

时间:2017-06-06 14:28:00

标签: java arrays

例如,如果输入为:

  

2 0 6 3 1 6 3 1 6 3 1

然后输出应该是6 3 1.需要找到第一个重复周期。

class FindDuplicate
{
void printRepeating(int arr[], int size)
{
    int i; 
    System.out.println("The repeating elements are : ");

    for (i = 0; i < size; i++)
    {
        if (arr[Math.abs(arr[i])] >= 0)
            arr[Math.abs(arr[i])] = -arr[Math.abs(arr[i])];
        else
            System.out.print(Math.abs(arr[i]) + " ");
    }        
} 


public static void main(String[] args) 
{
    FindDuplicate duplicate = new FindDuplicate();
    int arr[] = {1, 2, 3, 1, 2, 3, 1, 2, 3 };
    int arr_size = arr.length;
    duplicate.printRepeating(arr, arr_size);
}
}

3 个答案:

答案 0 :(得分:1)

https://pastebin.com/12bnjzfw 已经使用java 8流来创建集合。

for (int seqSize = ints.size() / 2; seqSize > 0; seqSize--) { //It should be first cycle. Main priority is biggest sequence
  for (int i = 0; i < ints.size() / seqSize; i++) { //Start position of the first block
    for (int j = i + seqSize; j < ints.size() - seqSize + 1; j++) {
      if (ints.subList(i, i + seqSize).equals(ints.subList(j, j + seqSize))) {
        System.out.println("Answer is: " + ints.subList(i, i + seqSize));
        return;
      }
    }
  }
}

答案 1 :(得分:0)

循环遍历这些数组元素并缓存元素,直到您具有相同的值,例如

List list = Arrays.asList(1,2,3);
if(list.contains(element))
 //code to check here

你需要得到你的列表的大小,并根据该检查确切地说明这些项目的数量是否匹配,如果是,则输出如果不清除缓存并从乞讨开始缓存。

答案 2 :(得分:0)

class FindDuplicate {
    static int STRING_LENGTH = 3;

    void printRepeating(int arr[], int size) {
        int i; 
        System.out.println("The repeating elements are : ");
        String strVal = "";
        for (int ii = 0; ii < size; ii++) {
            strVal += arr[ii]; 
        }
        // strVal now has something we can search with.

        for (i = 0; i < size; i++) {
            int end = Math.min(size,i+STRING_LENGTH );
            String searchString = strVal.substring(i, end);
            if (searchString.length() != STRING_LENGTH)
                break;  // at end of arr, doesn't have length to search 
            int matchIndex = strVal.indexOf(searchString, i+1);
            if (matchIndex != -1) {
               String match = strVal.substring(matchIndex, matchIndex + STRING_LENGTH);
               System.out.print(match + " ");
               break; // done with loop
            }
        }        
    } 


    public static void main(String[] args) {
        FindDuplicate duplicate = new FindDuplicate();
        int arr[] = {1, 2, 3, 1, 2, 3, 1, 2, 3 };
        int arr_size = arr.length;
        duplicate.printRepeating(arr, arr_size);
    }
}