NHibernate с использованием QueryOver с WHERE IN

Это был один из вопросов моего интервью.

У нас есть матрица, содержащая целые числа (диапазон не указан). Матрица случайным образом заполняется целыми числами. Нам нужно разработать алгоритм, который находит те строки, которые точно соответствуют столбцу (столбцам). Нам нужно вернуть номер строки и номер столбца для совпадения. Порядок соответствия элементов такой же. Например, If, i-я строка соответствует j-му столбцу, а i-я строка содержит элементы - [1,4,5,6,3]. Тогда j-й столбец также будет содержать элементы - [1,4,5,6,3]. Размер nx n. Мое решение:

RCEQUAL(A,i1..12,j1..j2)// A is n*n matrix
if(i2-i1==2 && j2-j1==2 && b[n*i1+1..n*i2] has [j1..j2])
   use brute force to check if the rows and columns are same.
if (any rows and columns are same)
   store the row and column numbers in b[1..n^2].//b[1],b[n+2],b[2n+3].. store row no,
                                                 // b[2..n+1] stores columns that 
                                                 //match with row 1, b[n+3..2n+2] 
                                                 //those that match with row 2,etc..

else
   RCEQUAL(A,1..n/2,1..n/2);
   RCEQUAL(A,n/2..n,1..n/2);
   RCEQUAL(A,1..n/2,n/2..n);
   RCEQUAL(A,n/2..n,n/2..n);

Занимает O (n ^ 2). Это правильно? Если верно, есть ли более быстрый алгоритм?

5
задан Brahadeesh 23 March 2011 в 16:50
поделиться