Đề bài
Classify three side lengths as invalid, equilateral, isosceles, or scalene. A valid triangle has positive sides, and its two shortest sides must sum to more than its longest side. Equal-to is invalid: it forms a straight line. Use equilateral for three equal sides, isosceles for exactly two, and scalene for three different sides.
Implement triangle_classification(sides).
Input
sides: The three side lengths in any order.
Output
Return one lowercase label: invalid, equilateral, isosceles, or scalene.
Ràng buộc
Exactly three integer sides, each between −1,000,000,000 and 1,000,000,000. Nonpositive sides are invalid.
Ví dụ
Đầu vào:
sides = [5, 5, 8]
Kết quả mong đợi:
expected = "isosceles"
Đầu vào:
std::vector<long long> sides = {5, 5, 8};
Kết quả mong đợi:
std::string expected = "isosceles";
Đầu vào:
long[] sides = new long[] {5, 5, 8};
Kết quả mong đợi:
string expected = "isosceles";
Giải thích
Two sides equal 5, and 5 + 5 > 8, so this is a valid isosceles triangle.
Đầu vào:
sides = [1, 2, 3]
Kết quả mong đợi:
expected = "invalid"
Đầu vào:
std::vector<long long> sides = {1, 2, 3};
Kết quả mong đợi:
std::string expected = "invalid";
Đầu vào:
long[] sides = new long[] {1, 2, 3};
Kết quả mong đợi:
string expected = "invalid";
Giải thích
1 + 2 equals 3. The strict inequality fails, so these lengths form a line.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Trước hết loại các tam giác không thể có: cạnh không dương hoặc cạnh lớn nhất quá dài.
Gợi ý 2
Sắp xếp các cạnh để kiểm tra bất đẳng thức tam giác dễ hơn.
Gợi ý 3
Sau đó phân loại theo số cạnh bằng nhau: ba, hai, hoặc không có.
Độ phức tạp mong đợi
thời gian O(1), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.