2.1 算法解釋
雙指針主要用於遍歷陣列,兩個指針指向不同的元素,從而協同完成任務。也可以延伸到多個陣列的多個指針。
若兩個指針指向同一陣列,遍歷方向相同且不會相交,則也稱為滑動窗口(兩個指針包圍的區域即為當前的窗口),經常用於區間搜索。
若兩個指針指向同一陣列,但是遍歷方向相反,則可以用來進行搜索,待搜索的陣列往往是排好序的。
在 C++ 中,要注意 const
的位置對指針效果的影響:
int x;
int * p1 = &x; // 指針可以被修改,值也可以被修改
const int * p2 = &x; // 指針可以被修改,值不可以被修改(const int)
int * const p3 = &x; // 指針不可以被修改(* const),值可以被修改
const int * const p4 = &x; // 指針不可以被修改,值也不可以被修改