Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số, arr, làm đối số đầu tiên và duy nhất.
Nhiệm vụ của hàm là đếm số lượng bộ ba được chọn từ mảng có thể tạo thành tam giác nếu lấy chúng làm độ dài ba cạnh.
Ví dụ, nếu đầu vào là:
const arr = [2, 2, 3, 4];
Thì đầu ra nên là:
const output = 3;
Giải thích kết quả
Các tổ hợp hợp lệ:
2,3,4 (dùng 2 đầu tiên) 2,3,4 (dùng 2 thứ hai) 2,2,3
Ví dụ
Dưới đây là mã:
const arr = [2, 2, 3, 4];
const countTriangle = (arr = []) => {
arr.sort((a, b) => a - b)
let k = 2
let count = 0
for (let i = 0; i < arr.length - 2; i++) {
for (let j = i + 1; j < arr.length - 1; j++) {
k = j + 1
while (arr[k] < arr[i] + arr[j]) {
k += 1
}
count += k - j - 1
}
}
return count
};
console.log(countTriangle(arr));
Kết quả
Kết quả console:
3