从Python的数字列表中查找算术子序列数的程序?

假设我们有一个称为nums的数字列表,我们必须找到长度≥3的算术子序列数。正如我们所知,算术序列是一个数字列表,其中一个数字与下一个数字之差相同。

因此,如果输入像nums = [6、12、13、8、10、14],那么输出将是3,因为我们有以下子序列:[6、8、10],[6、10、14 ],[12、13、14]。

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

  • dp:=新映射

  • n:= nums的大小

  • res:= 0

  • 对于0到n范围内的i,执行

    • diff:= nums [i]-nums [j]

    • prev:= dp [(i,diff)]如果不存在,则为0

    • prevprev:= dp [(j,diff)]如果不存在,则为0

    • dp [i,diff]:=上一页+ prevprev + 1

    • res:= res + prevprev

    • 对于范围在0到i之间的j,执行

    • 返回资源

    示例

    class Solution:

       def solve(self, nums):

          dp = {}

          n = len(nums)

          res = 0

          for i in range(n):

             for j in range(i):

                diff = nums[i] - nums[j]

                prev = dp.get((i, diff), 0)

                prevprev = dp.get((j, diff), 0)

                dp[(i, diff)] = prev + prevprev + 1

                res += prevprev

          return res

    ob = Solution()nums = [6, 12, 13, 8, 10, 14]

    print(ob.solve(nums))

    输入值

    [6, 12, 13, 8, 10, 14]

    输出结果

    3

    以上是 从Python的数字列表中查找算术子序列数的程序? 的全部内容, 来源链接: utcz.com/z/316054.html

    回到顶部