Để giải quyết bài toán này, chúng ta có thể sử dụng cách duyệt qua mảng và kiểm tra tổng của ba phần tử liên tiếp. Nếu có bất kỳ bộ ba phần tử nào có tổng bằng 7, hàm sẽ trả về true. Nếu không tìm thấy, hàm sẽ trả về false.

Dưới đây là cách triển khai hàm vnengineer_cal:

function vnengineer_cal(arr) {
    // Duyệt qua mảng, trừ đi 2 để tránh vượt quá độ dài mảng
    for (let i = 0; i < arr.length - 2; i++) {
        // Tính tổng của ba phần tử liên tiếp
        const sum = arr[i] + arr[i + 1] + arr[i + 2];
        // Nếu tổng bằng 7, trả về true
        if (sum === 7) {
            return true;
        }
    }
    // Nếu không tìm thấy bộ ba phần tử nào thỏa mãn, trả về false
    return false;
}

Giải thích:

  • Vòng lặp for: Vòng lặp chạy từ đầu mảng cho đến phần tử thứ arr.length - 2, để đảm bảo không vượt quá độ dài của mảng khi xét bộ ba phần tử liên tiếp.
  • Tính tổng: Ở mỗi vị trí i, ta tính tổng của ba phần tử liên tiếp là arr[i], arr[i + 1], và arr[i + 2].
  • Kiểm tra: Nếu tổng của ba phần tử bằng 7, hàm sẽ trả về true.
  • Kết thúc: Nếu không tìm thấy bộ ba phần tử nào có tổng bằng 7, hàm sẽ trả về false.

Ví dụ:

console.log(vnengineer_cal([1, 2, 4, 0, 1])); // true (vì 1 + 2 + 4 = 7)
console.log(vnengineer_cal([1, 2, 3, 0, 5])); // false (không có bộ ba nào có tổng bằng 7)
console.log(vnengineer_cal([3, 2, 2, 0, 2])); // true (vì 3 + 2 + 2 = 7)

Hàm này có độ phức tạp thời gian là O(n), với n là độ dài của mảng.