1218. 最长定差子序列

1218. 最长定差子序列

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

1218. 最长定差子序列

https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/description/

完成情况:

1218. 最长定差子序列_第1张图片

解题思路:

1218. 最长定差子序列_第2张图片

参考代码:

package LeetCode中等题;

import java.util.HashMap;

public class __1218最长定差子序列 {
    /**
     * difference 是等差数列的差额
     * 然后我要输出最长的满足条件的等差数列的长度
     *
     * @param arr
     * @param difference
     * @return
     */
    public int longestSubsequence(int[] arr, int difference) {
        //这也是一种常见的题目吧,就是找满足条件的数,然后怎么在一轮时间内就可以完成
        //啊,看来长得一样,但是结题思路完全不一样啊,这道题居然用的是动态规划dp
        //贪心思想。。。。。
        int max = 1;
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < arr.length; i++) {   //一次遍历
            Integer val = map.get(arr[i] - difference);
            if (val != null) {
                map.put(arr[i], val + 1);
                max = max >= val + 1 ? max : val + 1;
            } else {
                map.put(arr[i], 1);
            }
        }
        return max;
    }
}

你可能感兴趣的:(算法知识,#,LeetCode题解,java学习,链表,数据结构,算法,leetcode,java)