【Java每日一题,动态规划】最长定差子序列

简介: 【Java每日一题,动态规划】最长定差子序列

Introduction

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


Input

第一行给出整数个数n,第二行给出n个排列整数,第三行间隔


Output

对每一组输入,在一行中输出最长等差子序列的长


Sample

input

5
1 2 3 4 5
1

output

5

Solution

import java.util.HashMap;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=s.nextInt();
        }
        int k=s.nextInt();
        int ans=0;
        HashMap<Integer,Integer> map=new HashMap();
        for(int i=0;i<n;i++){
            int num=map.getOrDefault(arr[i]-k,0);
            map.put(arr[i],num+1);
            ans=Math.max(num+1,ans);
        }
        System.out.println(ans);
    }
}

Experience

dp也能用map来实现

相关文章
|
9月前
代码随想录 Day46 动态规划14 LeetCode T392 判断子序列 T115 不同的子序列
代码随想录 Day46 动态规划14 LeetCode T392 判断子序列 T115 不同的子序列
71 0
|
9月前
|
Python Java Go
Java每日一练(20230419) 二叉树的最大深度、层序遍历、最短回文串
Java每日一练(20230419) 二叉树的最大深度、层序遍历、最短回文串
83 0
Java每日一练(20230419) 二叉树的最大深度、层序遍历、最短回文串
|
9月前
|
Java
leetcode 516. 最长回文子序列(JAVA)题解
leetcode 516. 最长回文子序列(JAVA)题解
89 0
|
Java
594. 最长和谐子序列 --力扣 --JAVA
和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。
53 0
【Java每日一题,动态规划,Map实现】最长定差子序列
【Java每日一题,动态规划,Map实现】最长定差子序列
|
人工智能 Java
最长回文子序列 java
最长回文子序列 java
编辑距离(力扣 72)Java动态规划
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。
编辑距离(力扣 72)Java动态规划
|
Java
数位排序——22年省赛(JAVA解法)
数位排序——22年省赛(JAVA解法)
155 0
|
算法 Java
力扣300:最长递增子序列(Java动态规划+双指针)
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
229 0
|
算法 Java
最长递增子序列(力扣 300)Java动态规划
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
130 0

热门文章

最新文章