概念
双指针,顾名思义,就是用两个指针解决问题。
有些问题用单指针会出现超时等问题,这时就需要用到双指针。
双指针由两个指针组成,一般是左右指针,或前后指针。
通过两个指针配合变化,用更短的时间高效解决问题。
题目
合并有序数组
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int la, lb, lab;
int a[20010], b[10010];
int main() {
cin >> la;
for (int i = 1; i <= la; i++) {
cin >> a[i];
}
cin >> lb;
for (int i = 1; i <= lb; i++) {
cin >> b[i];
}
lab = la + lb;
int ai = la + 1, bi = lb + 1, abi = lab + 1;
while (ai > 1 && bi > 1) {
if (a[ai - 1] > b[bi - 1]) a[--abi] = a[--ai];
else a[--abi] = b[--bi];
}
while (bi > 1) a[--abi] = b[--bi];
for (int i = 1; i <= lab; i++) cout << a[i] << " ";
return 0;
}
完美数列
#include <bits/stdc++.h>
std;
n, p;
a[];
{
cin >> n >> p;
( i = ; i <= n; i++) {
cin >> a[i];
}
(a + , a + n + );
fast = , slow = ;
ma, mi;
mi = a[slow];
mama = ;
(fast < n) {
(fast < n) {
ma = a[++fast];
x = mi * p;
(ma <= x) mama = (mama, fast - slow + );
;
}
(slow < fast) {
mi = a[++slow];
x = mi * p;
(ma <= x) {
mama = (mama, fast - slow + );
;
}
}
}
cout << mama;
;
}


