382 三角形計數 LintCode

2021-08-11 08:56:59 字數 771 閱讀 2077

給定乙個整數陣列,在該陣列中,尋找三個數,分別代表三角形三條邊的長度,問,可以尋找到多少組這樣的三個數來組成三角形?

例如,給定陣列 s = ,返回3

其中我們可以找到的三個三角形為:

給定陣列 s = , 返回4

其中我們可以找到的三個三角形為:

(原理:三角形兩邊之和大於第三邊,一種思路是暴力迴圈三次,這裡作不討論)

1. 先對陣列進行排序

2. 從陣列下標為2的數開始,取為key值,對小於key值的數進行遍歷

3. 遍歷:分別從0(begin)和key值下標i-1(end)的位置取值,判斷s[begin] + s[end]之和是否大於key值。

4. 若大於,則存在這樣的三角形,且下標begin~end之間的數均符合:三角形兩邊之和大於第三邊,即存在(end - begin)個,同時end-1,跳回第三步,繼續執行,直到begin>=end

5. 若s[begin] + s[end]之和小於等於key值,則不符合三角形兩邊之和大於第三邊,需要增加s[beging]值,所以begin+1,跳回第三步,直到begin>=end

public class solution  else }}

return count;

}}

lintcode 382 三角形計數

給定乙個整數陣列,在該陣列中,尋找三個數,分別代表三角形三條邊的長度,問,可以尋找到多少組這樣的三個數來組成三角形?樣例例如,給定陣列 s 返回 3 其中我們可以找到的三個三角形為 給定陣列 s 返回 4 其中我們可以找到的三個三角形為 標籤思路 三角形兩邊之和大於第三邊,先將陣列排序,然後定位最長...

求大三角形中三角形個數

一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...

經典演算法 (三)帕斯卡三角形(楊輝三角形)

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。簡介 楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在165...