package com.interview.algorithms.array; import com.interview.basics.sort.QuickSorter; /** * Created with IntelliJ IDEA. * User: stefanie * Date: 8/8/14 * Time: 12:07 PM */ public class C4_43_FindMidNumber { public static boolean[] find(Integer[] numbers){ boolean[] mark = new boolean[numbers.length]; QuickSorter<Integer> sorter = new QuickSorter<>(); Integer[] sorted = sorter.sort(numbers.clone()); for(int i = 0; i < numbers.length; i++) mark[i] = numbers[i] == sorted[i]; return mark; } public static boolean[] findON(Integer[] numbers){ boolean[] mark = new boolean[numbers.length]; Integer[] max = new Integer[numbers.length]; max[0] = numbers[0]; for(int i = 1; i < numbers.length; i++){ max[i] = numbers[i] > max[i-1]? numbers[i] : max[i-1]; } int min = numbers[numbers.length - 1]; for(int i = numbers.length - 2; i >= 0; i--){ if(numbers[i] < min){ min = numbers[i]; if(numbers[i] == max[i]) { mark[i] = true; continue; } } mark[i] = false; } return mark; } public static boolean[] findAnswer(Integer[] numbers){ boolean[] mark = new boolean[numbers.length]; for(int i = 0; i < numbers.length; i++){ mark[i] = markOne(numbers, i); } return mark; } private static boolean markOne(Integer[] numbers, int i){ for(int j = 0; j < i; j++) if(numbers[j] > numbers[i]) return false; for(int j = i+1; j < numbers.length; j++) if(numbers[j] < numbers[i]) return false; return true; } }