sequence

 avatar
unknown
java
2 years ago
1.8 kB
3
Indexable
package com.company;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {

        Integer[] integers = {18, 26, 18, 24, 24, 20, 22}; 
        Arrays.sort(integers);
        List<List<Integer>> seqs = new ArrayList<>();

        if (integers.length <= 2) {
            seqs.add(Arrays.asList(integers));
        }

        for (int i = 0; i < integers.length; i++) {

            List<Integer> sequence = new LinkedList<>();
            boolean newSequence = true;
            int r = 0;
            int lastFromSeq = integers[i];

            for (int j = i; j < integers.length - 1; j++) {

                int second = integers[j + 1];
                if (newSequence) {
                    sequence.add(lastFromSeq);
                    r = second - lastFromSeq;
                    newSequence = false;
                }
                if (second - lastFromSeq == r) {
                    lastFromSeq = second;
                    sequence.add(second);
                }

            }

            seqs.add(sequence);

        }

        printLongest(seqs);
    }

    private static void printLongest(List<List<Integer>> seqs) {
        Map<Integer, List<List<Integer>>> groupedBySize = seqs.stream().collect(Collectors.groupingBy(List::size));
        TreeMap<Integer, List<List<Integer>>> sortedBySize = new TreeMap<>(groupedBySize);
        Entry<Integer, List<List<Integer>>> lastEntry = sortedBySize.lastEntry();
        System.out.println(lastEntry);
    }
}
Editor is loading...