首先推荐两个网址:
一: 代码随想录.
二:labuladong 的算法小抄
这里的指针通俗的理解为索引,不强制为C、C++的指针;
双指针主要分为两种:
+ 同向
+ 反向
int i = 0;
int j = 0;
while (j < length) {
if (...) {
// 调整i
}
j++;
}
典型例题:
27. 移除元素 206. 反转链表 1.2左右指针模板 (反向)int i = 0;
int j = len - 1;
while (i < j) {
// 动作
// 至少移动i和j中一个
}
典型例题:
977. 有序数组的平方 344. 反转字符串void reverseString(char* s, int sSize) {
int left = 0;
int right = sSize - 1;
while (left < right) {
int temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
2、滑动窗口法(双指针的高级应用)
本质上,滑动窗口也属于双指针,由于可以解决某一类题目(连续子数组、子字符串)等,单独诉述。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)