Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static int longestFlat(int[] arr)
- {
- return longestFlat(arr, 0);
- }
- private static int longestFlat(int[] a, int i)
- {
- if(i == a.length)
- return 0;
- int thisFlat = flatLength(a, i, a[i], false, 0);
- int nextFlat = longestFlat(a, i + 1);
- return Math.max(thisFlat, nextFlat);
- }
- private static int flatLength(int[] a, int i, int start, boolean hasNextValue, int nextValue)
- {
- if(i == a.length)
- return 0;
- if(a[i] != start)
- if(hasNextValue){
- if(a[i] != nextValue)
- return 0;
- }
- else{
- if(Math.abs(start - a[i]) != 1)
- return 0;
- return 1 + flatLength(a, i + 1, start, true, a[i]);
- }
- return 1 + flatLength(a, i + 1, start, hasNextValue, nextValue);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement