#3819
Medium Algorithms Rotate non negative elements
Array Simulation
47.8% acceptance
Mar 16, 2026
74
9
Rotate only non-negative elements left by k positions cyclically.
Negative elements stay in place.
Solution
Rust
Time O(n)
Space O(1)
impl Solution {
pub fn rotate_elements(nums: Vec<i32>, k: i32) -> Vec<i32> {
let mut non_neg: Vec<i32> = nums.iter().filter(|&&x| x >= 0).copied().collect();
let len = non_neg.len();
if len == 0 { return nums; }
let k = (k as usize) % len;
non_neg.rotate_left(k);
let mut result = nums;
let mut idx = 0;
for v in result.iter_mut() {
if *v >= 0 {
*v = non_neg[idx];
idx += 1;
}
}
result
}
}