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

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

Introduction

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


子序列是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从arr 派生出来的序列。


Input

第一行给出数组arr的元素个数,第二行给出arr中各个元素的值,第三行给出等差difference。其中,1 <= arr.length <=105,−104<= arr[i], difference <=10^4


Output

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

Sample

input

5
1 2 3 4 5
1

output

5

Solution

import java.util.HashMap;
import java.util.Scanner;
public class Main5 {
    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

动态规划可以分为数组或者Map实现,当需要构造数组的长度很大的时候,推荐就使用Map了

相关文章
|
21天前
|
Java
0-1背包问题(Java详解)(动态规划)至少与恰好
0-1背包问题(Java详解)(动态规划)至少与恰好
28 1
|
5天前
|
存储 安全 Java
Java的Map接口及其实现类的技术性文章
Java的Map接口及其实现类的技术性文章
7 0
|
6天前
|
存储 安全 Java
Java list set map等接口及其实现类
Java list set map等接口及其实现类
|
8天前
|
存储 Java Serverless
Java集合利器 Map & Set
Java集合利器 Map & Set
|
13天前
|
存储 自然语言处理 Java
数据结构-Java Map 和 Set-2
数据结构-Java Map 和 Set
6 0
|
13天前
|
Java
数据结构-Java Map 和 Set-1
数据结构-Java Map 和 Set
24 0
|
14天前
|
存储 Java
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
|
14天前
|
Java
|
21天前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
16 0
|
21天前
|
存储 Java
【JAVA基础篇教学】第十篇:Java中Map详解说明
【JAVA基础篇教学】第十篇:Java中Map详解说明