算法:给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置 - 前端笔记-给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置 必须在原数组上操作,不能用额外的数组 输入:[0,1,0,3,12] 输出:[1,3,12,0,0] .....

学习笔记

点滴记忆
回忆过往
首页>> 算法 >>算法:给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置 - 前端笔记
给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置
  1. 必须在原数组上操作,不能用额外的数组
  2. 输入:[0,1,0,3,12]   输出:[1,3,12,0,0]

js版本
let arr = [0, 1, 0, 3, 12]

console.log(move_zeroes(arr)) // [ 1, 3, 12, 0, 0 ]

function move_zeroes(arr) {
    let j = 0;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] != 0) {
            arr[j] = arr[i]
            j++
        }
    }
    for (let i = j; i < arr.length; i++) {
        arr[i] = 0
    }
    return arr
}


go 版本
package main

import "fmt"

func main() {
  arr := [...]int{0, 1, 0, 3, 12}
  fmt.Println(move_zeroes(arr))
}
func move_zeroes(arr [5]int) [5]int {
  var j = 0
  for i := 0; i < len(arr); i++ {
    if arr[i] != 0 {
      arr[j] = arr[i]
      j++
    }
  }

  for i := j; i < len(arr); i++ {
    arr[i] = 0
  }
  return arr
}


rust版本
pub fn num1() {
// 给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置
// 必须在原数组上操作,不能用额外的数组
// 输入:[0,1,0,3,12]   输出:[1,3,12,0,0]
  let mut vec = vec![0, 1, 0, 3, 12];
  move_zeroes(&mut vec);
}

fn move_zeroes(num: &mut Vec<i32>) {
  println!("{:?}----前-----", num);

  let mut j = 0;
  for i in 0..num.len() {
      println!("{}", num[i]);
      if num[i] != 0 {
          num[j] = num[i];
          j += 1
      }
  }

  for i in j..num.len() {
      num[i] = 0
  }

  println!("{:?}----后-----", num);
}







×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » 算法:给定一个数组,编写一个函数,把所有0移到末尾,同时保证非0值的相对位置

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)