Embedded System Interview: Triangle

Hot

Hiển thị các bài đăng có nhãn Triangle. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Triangle. Hiển thị tất cả bài đăng

Thứ Hai, 20 tháng 1, 2020

Triangle

tháng 1 20, 2020 0
An array A consisting of N integers is given. A triplet (P, Q, R) is triangular if 0 ≤ P < Q < R < N and:

        A[P] + A[Q] > A[R],
        A[Q] + A[R] > A[P],
        A[R] + A[P] > A[Q].

For example, consider array A such that:
  A[0] = 10    A[1] = 2    A[2] = 5
  A[3] = 1     A[4] = 8    A[5] = 20

Triplet (0, 2, 4) is triangular.

Write a function:

    int solution(vector<int> &A);

that, given an array A consisting of N integers, returns 1 if there exists a triangular triplet for this array and returns 0 otherwise.

For example, given array A such that:
  A[0] = 10    A[1] = 2    A[2] = 5
  A[3] = 1     A[4] = 8    A[5] = 20

the function should return 1, as explained above. Given array A such that:
  A[0] = 10    A[1] = 50    A[2] = 5
  A[3] = 1

the function should return 0.

Write an efficient algorithm for the following assumptions:

        N is an integer within the range [0..100,000];
        each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].


#include <algorithm>

bool is_triangle(int64_t a, int64_t b, int64_t c)
{
    return (a + b > c) &&
           (b + c > a) &&
           (c + a > b);
}

int solution(vector<int> &A) {
    // write your code in C++11 (g++ 4.8.2)
    if (A.size() < 3) return 0;
    
    sort(A.begin(), A.end());
    
    int res = 0;
    for (int i = 0; i < int(A.size() - 2); i++) {
        if (is_triangle(A[i], A[i + 1], A[i + 2])) return 1;    
    }
    
    return 0;
}
Read More
Thường mất vài phút để quảng cáo xuất hiện trên trang nhưng thỉnh thoảng, việc này có thể mất đến 1 giờ. Hãy xem hướng dẫn triển khai mã của chúng tôi để biết thêm chi tiết. Ðã xong