15 三數之和(陣列 排序 雙指標)

2021-10-02 18:47:29 字數 1780 閱讀 5087

我的方案:

class

solution

for(

int i =

1; i < nums.

size()

; i++

)else

nums.

at(j)

= value;}}

for(

int i =

0; i < nums.

size()

; i++)if

(i >

0&& nums[i]

== nums[i-1]

)int left = i +1;

int right = nums.

size()

-1;while

(left < right)

else

if(nums[i]

+ nums[left]

+ nums[right]

>0)

else}}

return vec;}}

;

之前編譯不通過的錯誤**

class

solution

for(

int i =

1; i < nums.

size()

; i++

)else

nums.

at(j)

= value;}}

vector<

int>

::iterator it;

vector<

int>

::iterator it_r;

vector<

int>

::iterator it_l;

for(it = nums.

begin()

;it!=nums.

end()-

2;it++

) it_r = it +1;

it_l = nums.

end()-

1;while

(it_l > it_r)if(

*it +

*it_l +

*it_r <0)

if(*it +

*it_l +

*it_r ==0)

it_r++;}

while

(*it_l ==

*(it_l+1)

) it_l--;}

}}while

(*it ==

*(it+1)

&&(it > nums.

end()-

2))}

return vec;}}

;

這個失敗的原因是*it和 *(it+1)兩者重複的問題,

while

(*it ==

*(it+1)

&&(it > nums.

end()-2))

it+1越界和(it > nums.end()-2)錯誤,所以需要改為

while

((it < nums.

end()-

3)&&*it ==

*(it+1)

)

總結:利用迭代器時,一定要注意it邊界越界問題。

三數之和,排序 雙指標

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 先固定乙個數,...

15 三數之和(哨兵 雙指標)

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solu...

Leetcode15 三數之和(雙指標)

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 給定乙個包含 n 個...