Rust 旋转数组

经典三旋转:

旋转数组经典算法就是三旋转先整体旋转之后在局部旋转

需要注意 求余运算,超过数组长度后要取余数后在旋转

如:[1,2,3,4,5,6,7]  3

>     [7,6,5,4,3,2,1]  整体旋转

>     [5,6,7,4,3,2,1]  [..k] 旋转

>     [5,6,7,1,2,3,4]  [k..] 旋转

  let k: usize = k as usize % nums.len();
  nums.reverse();
  nums[..k].reverse();
  nums[k..].reverse();

 使用Rust标准库右旋转!!!速度更快!

  let len = nums.len();
  nums.rotate_right(k as usize  % len)

%也可以使用rem_euclid(i32) 这个函数代替。

  let i=nums.len() as i32;
  ums.rotate_right(k.rem_euclid(i) as usize)

猜你喜欢

转载自www.cnblogs.com/Addoil/p/13384516.html