适用场景:1.一个i,一个j,然后他们有关系,一般来说是可以相互转化,也就是相加,相减等于某个值。 2.那种完全i和j有关式子的,求最大值或最小值

上面是两种和一致的情况,很固定,记着就行。和一致会用到哈希表,是On

这种的是i和j有关系,至于什么关系,你就按什么来就行,一般还是枚举j,然后遍历i。求最大是一次遍历,所以也是On 枚举j,然后看看要求i是什么,比如我们这里就是求values[j]+j,实际上也是values[i]+i,然后把这个值当做max,然后再求values[i]+i+values[j]-j,也就是mx+values[j]-j,也就是mx+num-j,需要搞明白枚举j,其实也就是i,这里可以代换,不明白就记住这个套路。 明白这个套路后,你就感觉很简单了,无脑先遍历j,然后要求i什么你就弄成j(这题就是要values[i]+i),然后再当成i(mx),遍历的时候再加上j(values[j]-j)就可以了。

重点:无论是那种的,如果枚举右,维护左,都是先更新答案再更新mx或者++,因为如果先更新mx或者++的话,就是和本身判断了,会出现i与i判断,或者i可以等于j了,i与i不符合和一致的条件,i等于j不符合i与j有大小关系的情况,所以固定先计算答案,再更新。