3次元すべてでソートされた3D行列が与えられ、その中で与えられた数を見つける必要があります。
上記の問題について、私はこれを考えていました。3D配列arr[m][n][r]
は、長方形のスタックのようなものであり、各長方形(考慮arr[m][n][0]
)は、右下の要素()として最大の要素を持ちarr[m-1][n-1][0]
ます。次の各長方形の内部を検索できますO(m+n)
:
int row = 0;
int col = N-1;
while (row < M && col >= 0)
{
if (mat[row][col] == elem)
{
return true;
}
else if (mat[row][col] > elem)
{
col--;
}
else
{
row++;
}
}
同様に3次元に拡張できると考えていたので、線形の複雑さのソリューションになりました(O(m+n+r)
)。私は正しいですか?
他に何かアイデアはありますか?複雑さは何でしょうか?