如果数字以圆形方式排列,我如何找到最长增加子序列的长度。例如:
LIS of 3, 2, 1 is 3 [1, 2, 3].
P.S我知道如何在O(nlogn)中解决线性LIS。
问题来源:https://www.codechef.com/problems/D2/
更新:LIS必须仅通过圆圈计算一次。
示例2:LIS of 1, 4, 3
为2,可以是1, 3
或1, 4
或3, 4
。
感谢
答案 0 :(得分:1)
有问题的例子是错误的。 [1,2,3]的圆周旋转为[2,3,1]或[3,1,2]。
在这种情况下,我们可以像增长最长的子序列一样解决它。为:
按升序对列表进行排序。
在原始列表中查找min元素。