首先介紹c++中的指標語法表示和迭代器的使用:
//指標
//1int h=5;
int*p=
&h;//2
int*p=
newint
;*p=
1001
;//迭代器
vector<
int> aa=
;vector<
int>
::iterator ie=aa.
begin()
;
然後介紹雙指標:雙指標,指的是在遍歷物件的過程中,不是普通的使用單個指標進行訪問,而是使用兩個相同方向(快慢指標)或者相反方向(對撞指標)的指標進行掃瞄,從而達到相應的目的。
換言之,雙指標法充分使用了陣列有序這一特徵,從而在某些情況下能夠簡化一些運算。
聽著抽象,實際很簡單,看後面例題,包看包會。
題目描述:
解析:由於陣列為公升序排列,故將兩個指標分別指向陣列的第乙個值和最後乙個值時,這兩數的和值將處於中間位置(最小值和第二小值之和=《最大值和最小值之和=《最大值與第二大值之和),因此當這兩數之和大於目標值我們將指向最後乙個值(最大值)的指標向左移,這一指標所指向的數將變小,和也將變小;如果這兩數之和小於目標值我們將指向第乙個值(最大值)的指標向右移,這一指標所指向的數將變大,和也將變大;如此迴圈往復,最終將找到目標解。
**如下:
class
solution
elseif(
((*ie)+(
*if)
)>target)
else
}return output;}}
;
leetcode刷題 演算法(1) 雙指標
167.two sum ii input array is sorted easy 633.sum of square numbers easy 注意 大數,以及臨界情況 345.reverse vowels of a string easy 注意 大寫情況 680.valid palindrome...
Leetcode刷題筆記(C ) 雙指標
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被...
leetcode刷題 雙指標
使用雙指標,乙個指向最左邊,乙個指向最右邊,判斷與目標target的大小關係 public int twosum int numbers,int target else if numbers l numbers r else return newint 0 題目 給定乙個非負整數 c 你要判斷是否存...