描述
该题来自于力扣第135题
分析
这题虽然是困难难度,其实很简单,评分有四种情况(简化后实际是2种),一一来看;
1. 递增,如 3 5 7
,直接取 1 2 3
2. 递减,如 7 5 3
,反过来来看就是递增,一样处理
3.
先递增后递减,1 3 5 3 2 1
,这种情况关键在于转折点,分开看就是前两种情况,1 3 5
和
5 3 2 1
,其中5
是转折点,除了转折点不一样,其他都一样,先取为
1 2 x 3 2 1
,那转折点x
应该取什么呢?显然取最大4
;
4. 先递减后递增;其实反过来就是第3点,也是一样的处理方法。
总结下就是先从左往右处理递增取值,递减直接取1;然后从右往左递增取值,递减取1,最后取两个的最大值即可。代码优化时,其实只要转折点取两者最大,非转折点不必处理,
代码
1 | from typing import List |