用 Python 编写的程序,用于查找循环列表中不相邻元素的总和
pythonserver side programmingprogramming
假设我们有一个名为 nums 的数字列表,它表示一个循环列表。我们必须找到不相邻数字的最大总和。
因此,如果输入为 nums = [10, 3, 4, 8],则输出将为 14,因为我们可以取 10 和 4。我们不能取 10 和 8,因为它们是相邻的。
为了解决这个问题,我们将遵循以下步骤 −
- n := nums 的大小
- nums1 := nums[从索引 0 到 n - 2]
- nums2 := nums[从索引 1 到结束]
- 定义一个函数 f() 。这将需要 i
- 如果 i >= nums1 的大小,则
- 返回 0
- 返回 nums1[i] + f(i + 2) 和 f(i + 1) 的最大值
- 定义一个函数 g() 。这将需要 j
- 如果 j >= nums2 的大小,则
- 返回 0
- 返回 nums2[j] + g(j + 2) 和 g(j + 1) 的最大值
- 从主方法执行以下操作 −
- 返回 f(0) 和 g(0) 的最大值
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, nums): n = len(nums) nums1 = nums[: n - 1] nums2 = nums[1:] def f(i): if i >= len(nums1): return 0 return max(nums1[i] + f(i + 2), f(i + 1)) def g(j): if j >= len(nums2): return 0 return max(nums2[j] + g(j + 2), g(j + 1)) return max(f(0), g(0)) ob = Solution() nums = [10, 3, 4, 8] print(ob.solve(nums))
输入
[10, 3, 4, 8]
输出
14
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

