如何遍历n * n矩阵而不接触i = j或i = j + 1

时间:2020-10-10 01:43:12

标签: algorithm matrix traversal

给出一个 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}

1 个答案:

答案 0 :(得分:0)

您正在遍历n*n矩阵,而无需触摸i = ji = j + 1。 (n的{​​{1}}和i = j的{​​{1}}除外元素的数量。因此,用于遍历的元素数量为n-1。因此,您无法在i = j + 1中做到这一点。

但是,迭代指定元素(在python中)很简单:

n^2 - (n +‌ n - 1) = n^2 - 2n + 1