给定一个数组(int型),从中选取若干元素,要求所选元素彼此之间均不可相邻(按数组索引判定,首尾元素视为不相邻,数组长度大于2时可同时选取首尾),在所有选取方案中,寻找元素数值总和的最大值。
请实现以下函数,计算最大数值总和,时间复杂度请尽量控制在O(N)(N指代数组长度),空间复杂度请尽量控制在O(1)。
int CalcMaxSum(const vector<int>& array);
参数说明如下:
array: 数组(std::vector<int>),输入参数。
返回值: 最大数值总和。