Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int solution(int[] A) {
- int maxSize = 0;
- // initialize the list where to put every beginning slice of maximum
- // size
- List<Integer> beginSlice = new ArrayList<Integer>();
- for (int i = 0; i < A.length; i++) {
- int startSlice = i;
- int j = i + 1;
- // initialize current max
- int currMax = 0;
- // compare each i with its consecutive
- // and stop when A[i+1> < A[i] or A.length is reached
- while (j < A.length && A[j] > A[i]) {
- // update current maximum size slice
- currMax = j - startSlice + 1;
- i++;
- j = i + 1;
- }
- // compare current maximum size slice with the maximum size
- if (currMax > maxSize) {
- // remove all old beginning slices of previous maximum size
- if (!beginSlice.isEmpty())
- beginSlice.removeAll(beginSlice);
- // add beginning slice to the list
- beginSlice.add(startSlice);
- // update maximum size
- maxSize = currMax;
- } else if (currMax == maxSize) {
- beginSlice.add(startSlice);
- }
- }
- // return any beginning slice of A of maximum size
- Random randomizer = new Random();
- Integer randomBSlice = beginSlice.get(randomizer.nextInt(beginSlice.size()));
- return randomBSlice.intValue();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement