最大最小问题一般都先考虑能不能dp,但这道题不需要dp。
三个数从小到大,间隔10,排序+贪心就好了,最小的三个一组,利用一个容量为queue存储数据,当now-pre<=10,就可以进队。
根据queue的size判断产生结果。可以利用pre和size直接模拟queue,也可以理解为马尔科夫状态过程:当前状态只与前一个状态有关。

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] ints = new int[n];
        for(int i = 0; i < ints.length; i++){
            ints[i] = scanner.nextInt();
        }
        Arrays.sort(ints);
        int index = 0;
        int pre = -1, size = 0, cnt = 0;
        while (index < n) {
//            System.out.println("pre " + pre + " size " + size);
            if(size == 0){
                pre = ints[index];
                size = 1;
            }else if(size == 1){
                if(ints[index] - pre <= 10){
                    pre = ints[index];
                    size = 2;
                }else{
                    pre = ints[index];
                    cnt += 2;
                    size = 1;
                }
            }else{
                if(ints[index] - pre <= 10){
                    pre = -1;
                    size = 0;
                }else{
                    pre = ints[index];
                    cnt++;
                    size = 1;
                }

            }
            index++;
        }
        if(size == 2){
            cnt++;
        }else if(size == 1){
            cnt += 2;
        }
        System.out.println(cnt);
    }
}