611 有效三角形的個數

2021-10-12 04:54:27 字數 1005 閱讀 2953

題目描述:

給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。

示例 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...