从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
热门推荐
10 读书祝福语女生短句简短
11 感谢同事新婚祝福语简短
12 感谢教官文案祝福语简短
13 员工聚会蛋糕祝福语简短
14 元宵发客户祝福语简短
15 给团队信心祝福语简短
16 医美的祝福语大全简短
17 异国姻缘的祝福语简短
18 兄妹拍照祝福语简短的话