package com.interview.flag.o; import com.interview.utils.ConsoleWriter; /** * Created_By: stefanie * Date: 14-12-1 * Time: 下午10:23 */ public class O2_MaxContinousSeq { //Time: O(N), Space O(1) public int[] getMaxCountSeq(int[] array){ int[] peak = new int[array.length]; int maxIdx = 0; peak[0] = 1; for(int i = 1; i < array.length; i++){ if(array[i] < array[i-1]) peak[i] = 1; else { if(array[i] >= array[maxIdx]){ peak[i] = peak[maxIdx] + i - maxIdx; maxIdx = i; } else { peak[i] = peak[i - 1] + 1; } } } return peak; } public static void main(String[] args){ int[] array = new int[]{3, 5, 6, 4, 5, 6, 4, 5, 1, 2, 1, 1, 1, 9, 8, 7}; O2_MaxContinousSeq builder = new O2_MaxContinousSeq(); int[] seq = builder.getMaxCountSeq(array); //1, 2, 3, 1, 2, 6, 1, 2, 1, 2, 1, 2, 3, 14, 1, 1 ConsoleWriter.printIntArray(seq); } }