其他分享
首页 > 其他分享> > LeetCode每日一题-1218最长定差子序列(中等)

LeetCode每日一题-1218最长定差子序列(中等)

作者:互联网

1218.最长定差子序列

2021.11.5

1.题目介绍


也是和昨天题目一样简单暴力的题目吧

2.题目分析

算法:哈希表和动态规划
好久没有做算法题目,动态规划忘记了,这个题目其实算是非常经典的动态规划题目了,主要思路如下:

3.代码实现

class Solution {
    public int longestSubsequence(int[] arr, int difference) 
    {
    	Map<Integer, Integer>mp=new HashMap<>();
    	int res=0;
    	//一遍插入一遍查找
        /*
        1.倒序查找已经保证了次序,所以在每个value处插入目前这个元素在这个difference的地方有多少次访问。
        2.旧元素处的数值顶掉旧value
        */ 
    	for(int i=arr.length-1;i>=0;--i)
    	{
    		int cnt=mp.getOrDefault(arr[i]+difference,0)+1;
            //System.out.println(cnt+"  "+arr[i]);
    		mp.put(arr[i],cnt);
    		res=Math.max(res, cnt);
    	}
    	return res;
    	}
}

QAQ感觉写的好白痴

标签:arr,题目,int,1218,元素,cnt,差子,difference,LeetCode
来源: https://www.cnblogs.com/oldoldcoder/p/15515177.html