给出一个 n * n 矩阵,在每一轮中,选择2套 X 和 Y ( X,Y 是 [n] 的子集,对于 X 中的所有 i 和中的所有 j > Y ,我们不能有 i = j 或 i = j + 1 。如何设计一种算法来找到这些 X 和 Y ,以便我们可以遍历此 n * n 矩阵而无需触碰(i, j)其中 i = j 或 i = j + 1 ,在 O(logn)时间内?谢谢。 例如当 n = 3 时,第一轮: X = {1},Y = {2,3} ,第二轮: X = {1,2}, Y = {3} ,第三轮: X = {3},Y = {1} 。
答案 0 :(得分:0)
您正在遍历n*n
矩阵,而无需触摸i = j
和i = j + 1
。 (n
的{{1}}和i = j
的{{1}}除外元素的数量。因此,用于遍历的元素数量为n-1
。因此,您无法在i = j + 1
中做到这一点。
但是,迭代指定元素(在python中)很简单:
n^2 - (n + n - 1) = n^2 - 2n + 1