zoukankan      html  css  js  c++  java
  • [Swift]LeetCode1218. 最长定差子序列 | Longest Arithmetic Subsequence of Given Difference

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(let_us_code)
    ➤博主域名:https://www.zengqiang.org
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11626365.html
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given an integer array arr and an integer difference, return the length of the longest arithmetic subsequence in arr 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

    给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。

    示例 1:

    输入:arr = [1,2,3,4], difference = 1
    输出:4
    解释:最长的等差子序列是 [1,2,3,4]。

    示例 2:

    输入:arr = [1,3,5,7], difference = 1
    输出:1
    解释:最长的等差子序列是任意单个元素。
    

    示例 3:

    输入:arr = [1,5,7,8,5,3,4,2,1], difference = -2
    输出:4
    解释:最长的等差子序列是 [7,5,3,1]。
    

    提示:

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

    Runtime: 748 ms
    Memory Usage: 23.9 MB
     1 class Solution {
     2     func longestSubsequence(_ arr: [Int], _ difference: Int) -> Int {
     3         var dp:[Int:Int] = [Int:Int]()
     4         var longest:Int = 0
     5         for i in 0..<arr.count
     6         {
     7             dp[arr[i]] = dp[arr[i]-difference,default:0] + 1
     8             longest = max(longest, dp[arr[i],default:0])
     9         }
    10         return longest
    11     }
    12 }
  • 相关阅读:
    最基础的账户余额要怎么在 mysql 实现?
    跳跃表时间复杂度分析推导
    Redis:RDB 中 fork 的使用
    字段、约束和索引在存储过程中的判断
    高效沟通的基本流程
    人月神话--画蛇添足
    课程评价及加分项
    人月神话--提纲挈领
    热词搜索七
    《大道至简:软件工程实践者的思想》
  • 原文地址:https://www.cnblogs.com/strengthen/p/11626365.html
Copyright © 2011-2022 走看看