zoukankan      html  css  js  c++  java
  • 【leetcode】1218. Longest Arithmetic Subsequence of Given Difference

    题目如下:

    Given an integer array arr and an integer difference, return the length of the longest subsequence in arr which is an arithmetic sequence such that the difference between adjacent elements in the subsequence equals difference.

    Example 1:

    Input: arr = [1,2,3,4], difference = 1
    Output: 4
    Explanation: The longest arithmetic subsequence is [1,2,3,4].

    Example 2:

    Input: arr = [1,3,5,7], difference = 1
    Output: 1
    Explanation: The longest arithmetic subsequence is any single element.
    

    Example 3:

    Input: arr = [1,5,7,8,5,3,4,2,1], difference = -2
    Output: 4
    Explanation: The longest arithmetic subsequence is [7,5,3,1].

    Constraints:

    • 1 <= arr.length <= 10^5
    • -10^4 <= arr[i], difference <= 10^4

    解题思路:记dic[i] = v 表示元素i是当前组成公差difference的第v个元素。只要遍历arr,判断每个元素i - different 是否存在于dic中;如果存在,dic[i] = dic[i-difference] + 1 ,否则dic[i] = 1。最后求出dic中value的最大值即可。

    代码如下:

    class Solution(object):
        def longestSubsequence(self, arr, difference):
            """
            :type arr: List[int]
            :type difference: int
            :rtype: int
            """
            dic = {}
            res = 1
            for i in arr:
                if (i - difference) in dic:
                    dic[i] = dic[i-difference] + 1
                else:
                    dic[i] = 1
                res = max(res, dic[i])
            return res
  • 相关阅读:
    Android 弹性布局 FlexboxLayout了解一下
    设计模式——适配器模式
    UML类图中的六种关系(物理设计阶段)
    设计模式——策略模式
    Kaggle-tiantic数据建模与分析
    数据预处理—独热编码
    推荐系统-协同过滤
    推荐系统实战-冷启动问题
    推荐系统-协同过滤原理与实现
    Hadoop生态系统之Yarn
  • 原文地址:https://www.cnblogs.com/seyjs/p/11646631.html
Copyright © 2011-2022 走看看