【题目】
【分析】 思路也挺容易的。比如: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 a b a b c b a c a d e f e g d e h i j h k l i j
(1)找第一块 先看a,最右边的a在8,所以至少要把8划进来。 再看b,最右边一个b在5<8,范围还是8 再看c,最右边一个c在7<8,范围还是8 一直看到第8个位置,0-8的元素都在0-8范围内。划分为第一块。
(2)找第二块 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 d e f e g d e h i j h k l i j
先看d,最右边一个d在14,所以范围至少为14. 再看e,最右边一个e在15,所以范围更新为15 再看f,最右边一个f在11,范围不变。 再看g,最右边一个f在13,范围不变。 一直找到15。9-15的元素都在9-15范围内。划分为第一块。
(3)找第三块 16 17 18 19 20 21 22 23 h i j h k l i j
看h,范围更新为19 看i,范围更新为22 看j,范围更新为23 看k,范围不更新
后面没有了,结束。
【代码】 这种题的代码也没有什么套路,自己捯饬清楚逻辑就行。
【结果】
|