Skip to content

Commit 8ee90fe

Browse files
committed
feat: add more
1 parent 66891f2 commit 8ee90fe

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed
Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,41 @@
11
// https://leetcode.com/problems/largest-perimeter-triangle
2-
//
2+
//
33
// 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`.
4-
//
4+
//
55
// **Example 1:**
6-
//
6+
//
77
// ```
88
// **Input:** nums = [2,1,2]
99
// **Output:** 5
1010
// ```
11-
//
11+
//
1212
// **Example 2:**
13-
//
13+
//
1414
// ```
1515
// **Input:** nums = [1,2,1]
1616
// **Output:** 0
1717
// ```
18-
//
18+
//
1919
// **Constraints:**
20-
//
20+
//
2121
// * `3 <= nums.length <= 10<sup>4</sup>`
2222
// * `1 <= nums[i] <= 10<sup>6</sup>`
2323

2424
pub fn largest_perimeter(nums: Vec<i32>) -> i32 {
25-
25+
let mut nums_clone = nums.clone();
26+
nums_clone.sort_unstable();
27+
for i in (0..nums_clone.len()).rev() {
28+
if i < 2 {
29+
break;
30+
}
31+
if nums_clone[i] < nums_clone[i - 1] + nums_clone[i - 2] {
32+
return nums_clone[i] + nums_clone[i - 1] + nums_clone[i - 2];
33+
}
2634
}
35+
return 0;
36+
}
2737

2838
#[test]
2939
pub fn t1() {
40+
assert_eq!(largest_perimeter(vec![2, 1, 2]), 5);
3041
}

Array/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ mod _0929_unique_email_addresses;
4444
mod _0944_delete_columns_to_make_sorted;
4545
mod _0953_verifying_an_alien_dictionary;
4646
mod _0961_n_repeated_element_in_size_2n_array;
47+
mod _0976_largest_perimeter_triangle;
4748
mod _0977_squares_of_a_sorted_array;
4849
mod _0999_available_captures_for_rook;
4950
mod _1002_find_common_characters;

0 commit comments

Comments
 (0)