# 1、双指针算法

# AcWing 791. 高精度加法

import java.util.*;

//ACWing
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.chonfu();
    }

    //最长不重复连续子序列
    void chonfu() {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a = new int[n];
        int[] nums = new int[100010];
        int res=0;
        for (int i = 0; i < n; i++)
            a[i] = scanner.nextInt();
        for (int i = 0, j = 0; i < n; i++) {
            nums[a[i]]++;
            while(nums[a[i]]>1){
                nums[a[j]]--;
                j++;
            }
            res=Math.max(res,i-j+1);
        }
        System.out.println(res);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;

//ACWing
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.mubiaohe();
    }

    //数组元素的目标和
    void mubiaohe() {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt(),m= scanner.nextInt(), x= scanner.nextInt();
        int A[]=new int[n];
        int B[]=new int[m];
        for (int i = 0; i < A.length; i++) {
            A[i]=scanner.nextInt();
        }
        for (int i = 0; i < B.length; i++) {
            B[i]=scanner.nextInt();
        }

        //AB均为严格的单调递增
        int i,j;
        for (i = 0,j=m-1; i < n; i++) {
            while(j>=0&&A[i]+B[j]>x)  j--;
            if(A[i]+B[j]==x) break;
        }
        System.out.println(i+" "+j);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;

//ACWing
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.mubiaohe();
    }

    //判断子序列
    void mubiaohe() {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(), m = scanner.nextInt();
        int a[] = new int[n];
        int b[] = new int[m];
        for (int i = 0; i < n; i++)
            a[i] = scanner.nextInt();
        for (int i = 0; i < m; i++)
            b[i] = scanner.nextInt();
        int i=0,j=0;
        while(j<m){
            if(i<n&&a[i]==b[j]) i++;
            j++;
        }
        if(i==n){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31