From 6a51947dcf7281a1715e500f6d8508a92c3b69fa Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Fri, 26 Sep 2025 19:12:59 +0800 Subject: [PATCH] feat: 611_valid_triangle_number --- 611_valid_triangle_number/Cargo.lock | 7 +++++++ 611_valid_triangle_number/Cargo.toml | 6 ++++++ 611_valid_triangle_number/src/lib.rs | 27 +++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 611_valid_triangle_number/Cargo.lock create mode 100644 611_valid_triangle_number/Cargo.toml create mode 100644 611_valid_triangle_number/src/lib.rs diff --git a/611_valid_triangle_number/Cargo.lock b/611_valid_triangle_number/Cargo.lock new file mode 100644 index 0000000..a13fe69 --- /dev/null +++ b/611_valid_triangle_number/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "valid_triangle_number" +version = "0.1.0" diff --git a/611_valid_triangle_number/Cargo.toml b/611_valid_triangle_number/Cargo.toml new file mode 100644 index 0000000..6cd7e41 --- /dev/null +++ b/611_valid_triangle_number/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "valid_triangle_number" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/611_valid_triangle_number/src/lib.rs b/611_valid_triangle_number/src/lib.rs new file mode 100644 index 0000000..59ea118 --- /dev/null +++ b/611_valid_triangle_number/src/lib.rs @@ -0,0 +1,27 @@ +pub struct Solution; + +impl Solution { + pub fn triangle_number(mut nums: Vec) -> i32 { + let mut count = 0; + + nums.sort(); + for (c_index, &c) in nums.iter().enumerate().skip(2) { + let mut a_index = 0; + let mut b_index = c_index - 1; + + while a_index < b_index { + let a = nums[a_index]; + let b = nums[b_index]; + + if a + b > c { + count += (b_index - a_index) as i32; + b_index -= 1; + } else { + a_index += 1; + } + } + } + + count + } +}