标签:字符串 空间 c++ 索引 很多 若是 这一 速度 不同
双指针我所理解地是在遍历对象时,不是使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行遍历,从而达到相应的目的。
在JAVA中并没有像C/C++指针地概念,所以这里所说的双指针是指索引,游标或可迭代对象等。
双指针在链表中也有很多用处,比如前面写到过的找出链表中的倒数第k个结点,就巧妙地利用到了双指针,此外,判断链表中是否有环也可以使用双指针,设两个快慢指针,让快指针一次移动两步,慢指针一次移动一步,若链表中有环,那么快指针与慢指针一定能够相遇,若两者没有相遇,说明链表中没有环。还有如果要给出链表中的中间的结点,也可以使用快慢指针,让快指针一次移动两步,慢指针一次移动一步,当快指针刚好到达链表的末尾时,慢指针所指向的正好是中间的结点(对于奇数个结点,就是中间中的一个,若是偶数个结点,是中间结点中的后一个,即length / 2);
由此看出,双指针的思想就是建立两个指针,这两个指针可以使相同方向,一般前进的速度不同或者两者的前进顺序不一致;也可能是相反的方向,通过使用相关的变量控制来达到我们的目的。
class Solution {
public void reverseString(char[] s) {
int j = s.length - 1;
for (int i = 0; i <j; i++,j--) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
标签:字符串 空间 c++ 索引 很多 若是 这一 速度 不同
原文地址:https://www.cnblogs.com/qingfeng5438/p/13053590.html