Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}