題目:
611. 有效三角形的個數
給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。
示例 1:
輸入: [2,2,3,4]
輸出: 3
解釋:有效的組合是:
2,3,4 (使用第乙個 2)
2,3,4 (使用第二個 2)
2,2,3
注意:陣列長度不超過1000。
陣列裡整數的範圍為 [0, 1000]。
思路:
我們的思路是先將陣列排序,
我們判斷條件是 當ac a,b,c三條邊肯定可以組成三角形
因此我們每次迴圈時保證 j=nums.size()-1-----0 也就是固定最大值
left=0;
right=j-1;
然後找到滿足他條件的 第乙個出現的 nums[left]+nums[right]>nums[j]
我們求 left到right 找出兩個數 看有多少組成公式 組合問題 (**中沒有其實用的是組合的思想,注意可以包含重複數字)
當nums[left]+nums[right]<=nums[j] left++;
**:
class
solution
else}}
return res;}}
;
題目:
15. 三數之和
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[[-1, 0, 1],
[-1, -1, 2]
]通過次數367,604
思路:
**:
class
solution
sort
(nums.
begin()
,nums.
end())
;//先排序
if(nums[0]
>
0|| nums[nums.
size()
-1]<0)
for(
int i=
0;i<=nums.
size()
-3;i++
)是倒數第乙個數
if(i>
0&&nums[i]
==nums[i-1]
)//當前元素與之間元素相同
int left=i+1;
int right=nums.
size()
-1;while
(leftleft++
;while
(left==nums[right-1]
) right--;}
else
if(sum<0)
else
if(sum>0)
}}return result_vv;}}
;
leetcode 有效三角形的個數
給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3 注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 1.此題類似於求三數之和為...
Leetcode 有效三角形的個數
給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 時間複雜度o n3 o n3...
611 有效三角形的個數
題目描述 給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3 注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 方法1 1 先對...