题目:给定一个正数数组,找到一个子数组满足条件:
1)子数组选择的元素不能包含原数组相邻元素
2)满足条件1的前提下,得到的子数组的和值最大
思路:遍历一次数组,设置两个变量:
包含当前元素的最大值 curMax
包含前一个元素的最大值preMax
在遍历过程过不断更新上述两个变量:
curMax = current +preMax' (preMax'表示上一轮中的值)
preMax = max(preMax', curMax')
具体案例数据分析:List = [2, 3, 4, 1, 9, 3, 2, 3, 3, 4]
(1)list[0] = 2 curMax = 2+ 0 = 2 preMax = max(0, 0 ) =0
(2) list[1] = 3 curMax = 3+0 = 3 preMax = max(2, 0) = 2
(3) list[2] = 4 curMax = 4 + 2 = 6 preMax = max(3, 2) =3
(4) list[3] = 1 curMax = 1 +3 =4 preMax = max(6, 3) =6
(5) list[4] = 9 curMax = 9 +6 =15 preMax = max(4, 6)&#