该程序在Python中查找列表中最大的不相邻元素之和

假设我们有一个称为nums的数字列表,我们将定义一个函数,该函数返回最大的非相邻数字之和。这里的数字可以是0或负数。

因此,如果输入类似于[3、5、7、3、6],那么输出将为16,因为我们可以分别用3、7和6来获得16。

为了解决这个问题,我们将按照以下步骤操作:

  • 如果nums的大小<= 2,则

    • 返回最大数

  • noTake:= 0

  • 取:= nums [0]

  • 对于范围为1到nums的i

    • 取:= noTake +数字[i]

    • noTake:= noTake和Take的最大值

  • 返回noTake的最大值

让我们看下面的实现以更好地理解-

示例

class Solution:

   def solve(self, nums):

      if len(nums) <= 2:

         return max(nums)

      noTake = 0

      take = nums[0]

      for i in range(1, len(nums)):

         take, noTake = noTake + nums[i], max(noTake, take)

         return max(noTake, take)

ob = Solution()

nums = [3, 5, 7, 3, 6]

print(ob.solve(nums))

输入项

[3, 5, 7, 3, 6]

输出结果

16

以上是 该程序在Python中查找列表中最大的不相邻元素之和 的全部内容, 来源链接: utcz.com/z/322495.html

回到顶部