leetcode 有效三角形的個數

2021-09-03 01:10:09 字數 972 閱讀 8767

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

示例 1:

輸入: [2,2,3,4]

輸出: 3

解釋:有效的組合是:

2,3,4 (使用第乙個 2)

2,3,4 (使用第二個 2)

2,2,3

注意:陣列長度不超過1000。

陣列裡整數的範圍為 [0, 1000]。

1.此題類似於求三數之和為零。

2.三邊構成三角形的條件,任意兩邊之和大於第三邊,任意兩邊之差小於第三邊

三數之和一樣,先確定兩條邊,再求第三條邊。

1.由於陣列裡整數的範圍為[0, 1000],故先對輸入進行判定:若陣列中大於0的個數若小於3個,則直接return 0;否則去除陣列中的零,再執行後續操作。

2.對陣列進行排序,這樣除了方便步驟1中的數非零數的個數和去零外,還能是確定第三條邊不可缺的條件。

3.先確定兩個指標i,j,完成雙迴圈,其中j的初始條件為j = i + 1;

4.確定第三條邊的範圍:設立左座標index1,初始化為0,每次迴圈+1直至nums[index1]>nums[j]-nums[i],右座標index2,初始化為nums.size()-1,每次迴圈-1直至nums[index1]i與j比對,若index1>i,index1–;若index2

class solution 

}return res/3;

}};

該想法來自大佬luissssgao感覺比我的好不少!!!

每次先拿到第三條邊,然後找前兩條邊的範圍!這樣複雜度可以下降到0(n^2)!**如下(c++)

class solution 

else }}

return count;

}};

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

leetcode 611 有效三角形的個數

給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3 注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 方法一 對陣列進行排序 固...

611 有效三角形的個數

題目描述 給定乙個包含非負整數的陣列,你的任務是統計其中可以組成三角形三條邊的三元組個數。示例 1 輸入 2,2,3,4 輸出 3 解釋 有效的組合是 2,3,4 使用第乙個 2 2,3,4 使用第二個 2 2,2,3 注意 陣列長度不超過1000。陣列裡整數的範圍為 0,1000 方法1 1 先對...