双指针算法
在什么情况使用:当i跟j满足单调性时
1、具体逻辑:
for (int i = 0; i < n; i ++)
{
while(j < i && check(i,j)) j ++;
}
2、核心思想:
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j++)
o(n^2)
将上面的朴素算法优化到o(n)
双指针算法的基本应用
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[1000];
gets(str);
int n = strlen(str);
for(int i = 0; i < n; i ++)
{
int j = i;
while (j < n && str[j] != ' ') j ++;
for (int k = i; k < j; k ++) cout << str[k];
cout << endl;
i=j;
}
return 0;
}
输入:abc def ijk
输出:
abc
def
ijk