976: Largest-Perimeter-Triangle
Easy


table of contents

You can sort nums from smallest to largest…

sort(nums.begin(), nums.end());

… and then iterate backwards, with index i, checking if the last 3 elements (i, i-1 & i-2) fit the triangle inequality. If those 3 elements do not satisfy the triangle inequality, then no combination of elements with i as the largest side will form a valid triangle.

for (int i = nums.size()-1; i >= 2; --i) {
    if (nums[i] < nums[i-1] + nums[i-2]) {
        return nums[i] + nums[i-1] + nums[i-2];
    }
}
return 0;

code

class solution {
public:
    int largestperimeter(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        for (int i = nums.size()-1; i >= 2; --i) {
            if (nums[i] < nums[i-1] + nums[i-2]) {
                return nums[i] + nums[i-1] + nums[i-2];
            }
        }
        return 0;
    }
};

complexity

time taken