題目描述:
給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。
示例 1:
輸入: [2,2,3,4]
輸出: 3
解釋:有效的組合是:
2,3,4 (使用第乙個 2)
2,3,4 (使用第二個 2)
2,2,3
注意:
陣列長度不超過1000。
陣列裡整數的範圍為 [0, 1000]。
方法1:
(1)先對陣列進行排序,然後每次取個中間值,以中間值為中心,分別從前後找數字,判斷是否能組成三角形;
(2)由於已經是有序的,故對三角形條件的判斷只需要前面的數字加上中間的數字,和後面的數字比較即可;
(3)為了避免多餘的判讀,當後面的數字過大時,可以提前終止該次迴圈,找下乙個中間數字;
(4)對於當前中間值的判斷,可以先固定後面的乙個數字,去找前面的數字可以組成的合理的範圍;
class
solution
sort
(nums.
begin()
,nums.
end())
;//排序
int mid=1;
//中間值的索引
int counts=0;
//統計
while
(midsize()
-1)while
(left+nums[mid]
<=nums[right]
) counts+
=mid-left;
//加上前面可選的數字範圍
++right;
//下乙個後面數字
}++mid;
//下乙個中間數字
}return counts;}}
;
leetcode 611 有效三角形的個數
給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3 注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 方法一 對陣列進行排序 固...
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...