diff --git a/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README.md b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README.md index a63eca8b70374..4970290b70dbc 100644 --- a/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README.md +++ b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README.md @@ -176,6 +176,28 @@ function maxDistinctElements(nums: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn max_distinct_elements(mut nums: Vec, k: i32) -> i32 { + nums.sort(); + let mut ans = 0; + let mut pre = i32::MIN; + + for &x in &nums { + let cur = (x + k).min((x - k).max(pre + 1)); + if cur > pre { + ans += 1; + pre = cur; + } + } + + ans + } +} +``` + diff --git a/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README_EN.md b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README_EN.md index 1db8e7484e946..1d82d8752f563 100644 --- a/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README_EN.md +++ b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/README_EN.md @@ -174,6 +174,28 @@ function maxDistinctElements(nums: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn max_distinct_elements(mut nums: Vec, k: i32) -> i32 { + nums.sort(); + let mut ans = 0; + let mut pre = i32::MIN; + + for &x in &nums { + let cur = (x + k).min((x - k).max(pre + 1)); + if cur > pre { + ans += 1; + pre = cur; + } + } + + ans + } +} +``` + diff --git a/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/Solution.rs b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/Solution.rs new file mode 100644 index 0000000000000..70dff9f9ecc58 --- /dev/null +++ b/solution/3300-3399/3397.Maximum Number of Distinct Elements After Operations/Solution.rs @@ -0,0 +1,17 @@ +impl Solution { + pub fn max_distinct_elements(mut nums: Vec, k: i32) -> i32 { + nums.sort(); + let mut ans = 0; + let mut pre = i32::MIN; + + for &x in &nums { + let cur = (x + k).min((x - k).max(pre + 1)); + if cur > pre { + ans += 1; + pre = cur; + } + } + + ans + } +}