# Leetcode Largest-Perimeter-Triangle #### 2022-07-26 08:39 > ##### Algorithms: > > #algorithm #greedy #math > > ##### Difficulty: > > #coding_problem #difficulty-easy > > ##### Additional tags: > > #leetcode > > ##### Revisions: > > N/A ##### Related topics: ##### Links: - [Link to problem](https://leetcode.com/problems/largest-perimeter-triangle/) --- ### Problem Given an integer array `nums`, return _the largest perimeter of a triangle with a non-zero area, formed from three of these lengths_. If it is impossible to form any triangle of a non-zero area, return `0`. #### Examples **Example 1:** **Input:** nums = [2,1,2] **Output:** 5 **Example 2:** **Input:** nums = [1,2,1] **Output:** 0 #### Constraints - `3 <= nums.length <= 104` - `1 <= nums[i] <= 106` ### Thoughts > [!summary] > This is a #math problem. After sorting, the answer must be consecutive 3 elements. #### Why? assume l, m , r. if nums[l] + nums[m] < nums[r], because after sorting, the order is ascending, anything before l and m will not suffice. ### Solution ```cpp class Solution { public: int largestPerimeter(vector &nums) { sort(nums.begin(), nums.end()); int r = nums.size() - 1; // change l first until its boundary for (int i = r; i > 1; i--) { if (nums[i] < nums[i - 1] + nums[i - 2]) { return nums[i] + nums[i - 1] + nums[i - 2]; } } return 0; } }; ```