收資料的時候同一個數字只需收一次,但是要用Map紀錄這個數字出現的次數,並且存放到陣列的時候可以先將資料進行平方。將陣列排序過後使用兩個For迴圈來取陣列中的任意兩數,代表 a^2 + b^2 = c^2 的a和b。只需判斷c是否在Map中有超過一個數量就可以判斷這樣的組合是否為直角三角形。因為同一個數字可能會超過一個,所以答案要 += MAP[a] * MAP[b] * MAP[c]。
範例程式碼