中等
技术面试0 次浏览给定一个整数数组,找出其中不相邻元素的最大和。例如,数组 [2, 4, 6, 2, 5] 的最大和为 2 + 6 + 5 = 13。
微软中国后端工程师
算法动态规划
答题要点
推荐答题框架:采用动态规划的思路,定义状态和状态转移方程。关键要点:1. 状态定义:设 dp[i] 表示前 i 个元素中不相邻元素的最大和。2. 状态转移方程:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]),即要么不选当前元素,最大和为 dp[i - 1];要么选当前元素,最大和为 dp[i - 2] 加上当前元素的值。3. 初始化:dp[0] = nums[0],dp[1] = max(nums[0], nums[1])。4. 最终结果:dp[n - 1] 即为所求的最大和。示例思路:“我们使用动态规划来解决这个问题。首先初始化 dp[0] 和 dp[1],然后根据状态转移方程更新 dp 数组。最后,dp 数组的最后一个元素就是不相邻元素的最大和。对于数组 [2, 4, 6, 2, 5],通过计算可以得到最大和为 13。”