среда, 13 февраля 2013 г.

Задаче о колодце и дисках


За 18 минут решил задачку на codility. Этот сайт мне порекоммендовал коллега для тренировки алгоритмики. Решение получилось вот такое
class Solution {
  public int falling_disks ( int[] A,int[] B ) {
    int N = A.length;
    int M = B.length;
    for(int i = 1; i < N; i++){
      if (A[i - 1] < A[i]){
        A[i] = A[i - 1];
      }
    }
    int k = 0;
    int j = N;
    while (k < M && j > 0){
      while (A[--j] < B[k]){
        if (j == 0){
          return k;
        }
      }
      k++;
    }
    return k;
  }
}
Там даже сертификаты выдают за это дело. Вот мой типа.

Комментариев нет: