这是维基百科上给出的最长递增子序列的伪代码
L = 0
for i = 1, 2, ... n:
binary search for the largest positive j ≤ L
such that X[M[j]] < X[i] (or set j = 0 if no such value exists)
P[i] = M[j]
if j == L or X[i] < X[M[j+1]]:
M[j+1] = i
L = max(L, j+1)
我已经了解代码是如何工作的。我唯一不能理解的是这个语句的必要性(如果 j == L 或 X[i] < X[M[j+1]]:) 我已经尝试在许多示例上运行该算法,我可以做出什么是在所有情况下,要么 j == L 要么 X[i] < X[M[j+1]] ,所以 if 语句总是计算为 True。你能给我一个例子,if循环是假的,因此算法需要吗?