为了提高效率
    快排和归并都用到了双指针

    常见问题分类:
    (1) 对于一个序列,用两个指针维护一段区间
    (2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作

    1. for (int i = 0, j = 0; i < n; i ++ )
    2. {
    3. while (j < i && check(i, j)) j ++ ;
    4. // 具体问题的逻辑
    5. }

    重点在check(i,j)怎么写

    1. //最长连续不重复子序列
    2. for(int i=0,j=0;i<n;i++)
    3. {
    4. b[a[i]]++;
    5. while(b[a[i]]>1) //这里没有j<=i;因为加不加一样
    6. {
    7. b[a[j]]--;
    8. j++;
    9. }
    10. res=max(res,i-j+1);
    11. }

    其朴素算法

    1. for(int i=0;i<n;i++)
    2. for(int j=0;j<i;j++)
    3. {
    4. if(check(i,))res=max(res,i-j+1);
    5. }