zoukankan      html  css  js  c++  java
  • Rust 移动零

    移动零

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    示例:

    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]

    说明:

    1. 必须在原数组上操作,不能拷贝额外的数组。
    2. 尽量减少操作次数。

    两种方案:

    第一种排水法(drain) 标准库里的drain函数挺有意思。

    思路不是0就添加到vec末尾,新vec长度与之前的长度的2倍比较,不够就补充0。然后drain(..len) ,排出去。

       let len0 = nums.len();
        for i in 0..len0{
            if nums[i] != 0 {
                nums.push(nums[i])
            }
        }
        let len1 = nums.len();
        for _ in len1..2*len0{
            nums.push(0)
        }
        nums.drain(..len0);   
    

     第二种是替换法,先声明标志位,最开始是0。迭代数组,是0就不用管了,不是0,

    标志位替换为这个数,然后标志位加1,继续迭代。最后标志位和长度之间的所有元素替换为0;

       let len = nums.len();
        let mut j = 0;
        for i in 0..len{
            if nums[i] != 0 {
                nums[j] = nums[i];
                j = j + 1;
            }
        }
        for i in j..len{
            nums[i] = 0;
        }
        for e in nums.iter(){
            print!("{} ",e)
        }
    
  • 相关阅读:
    css实现垂直居中
    js验证输入框
    textarea统计字数
    ajax提交form表单
    JS中的正则表达式
    《遮蔽层的隐藏块》
    2016各大互联网公司前端面试题汇总
    JQ 添加节点和插入节点的方法总结
    [原]CentOS7部署osm2pgsql
    [原]CentOS7部署PostGis
  • 原文地址:https://www.cnblogs.com/Addoil/p/13391121.html
Copyright © 2011-2022 走看看