给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

方法一(直接交换法):

代码:

//直接交换
var moveZeroes = function (nums) {if (nums.length < 2) {return nums}let tmp = 0 //tmp指向0存在的位置for (let i = 0; i < nums.length; i++) {if (nums[i] != 0) {if (nums[tmp] == 0) {nums[tmp] = nums[i]nums[i] = 0}tmp++}}return nums
};

方法二(splice+push):

代码:

//splice+push
function moveZeroes(arr) {let count = 0; //用count来防止死循环for (let i = 0; i < arr.length - count; i++) {while (arr[i] === 0) { //一直对i=1判断,直到它的值不是0arr.splice(i, 1);arr.push(0);count++;}}return arr;
}

方法三(快慢指针)与方法一类似:

代码:

var moveZeroes = function (nums) {var n = nums.lengthvar k = 0//慢指针for (let i = 0; i < n; i++) {if (nums[i] != 0) {nums[k++] = nums[i]//k从头慢慢放不为0的数}}for (let i = k; i < n; i++) {nums[i] = 0  //剩下的置为0}return nums
};

运行相关代码

var nums = [0, 1, 0, 3, 4, 0, 12]
console.log(moveZeroes(nums)) //[1, 3, 4, 12, 0, 0, 0]

Finish!!!

JS实现 移动零 (将数组中零元素移到数组后面)相关推荐

  1. 微信小程序更新二维数组中的对象或数组的属性值

    微信小程序更新二维数组中的对象或数组的属性值,这里可能有两种情况 1.微信小程序更新二维数组中的对象的属性值 更新二维数组中的某个对象的属性值,代码如下 js 代码 data: {familys:[{ ...

  2. java数组中怎么去重_java数组去重怎么弄???大神来解

    [Java] 纯文本查看 复制代码public class TestDemo { public static void main(String[] args) { //10个整数{9,10,6,6,1 ...

  3. ios 替换数组中元素_ios可变数组的所有操作

    #pragma mark 创建数组c NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@& ...

  4. 每天一道LeetCode-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大

    Maximum Product Subarray 原题链接Maximum Product Subarray 在给定数组中找到一个子数组,使得这个子数组元素的乘积最大.给定数组中可能有正数,负数和0 思 ...

  5. 在一个数组中删除另一个数组存在的值

    在一个数组中删除另一个数组存在的值 可以在购物车中删除多个商品的时候用此方法 在Vuex实现完整购物车中有涉及,详见 Vuex实现完整购物车 <script type="text/ja ...

  6. java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置...

    此类实现: 输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组. 并交换两个子数组的位置,保持子数组中的元素序号不变. 如:原数组为7,9,8,5,3,2 以下标3为分割点, ...

  7. java从数组中删除元素(数组的缩容)

    java从数组中删除元素(数组的缩容) 1,解决方案一 /* * 数组的缩容(删除元素) * 第一种解决方案 * 移动元素,被删除元素后面的元素往前移一位 * 优点:不需要创建新数组,省内存,速度快 ...

  8. 将1-1000中所有12的倍数存到一个一维数组中,输出该数组和数的个数

    将1-1000中所有12的倍数存到一个一维数组中,输出该数组和数的个数 #include<stdio.h>void main(){int i,j=0,a[100];for(i=1;i< ...

  9. JAVA剑指offer编程练习:二维数组中的查找(数组)

    1.题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

最新文章

  1. Map m=new HashMap()
  2. [概统]本科二年级 概率论与数理统计 第八讲 大数定律与中心极限定理
  3. XML解析中的namespace初探
  4. [HOW TO]-官网拉取Trusty-TEE的代码
  5. [云炬学英语]每日一句2020.8.28
  6. 私房钱就藏在老婆眼皮底下
  7. 深度学习标注工具LabelImg的使用方法
  8. LINUX脚本中如何判断相等
  9. centos 计算器_在Linux命令行中使用计算器的5个命令
  10. Java项目:图书馆借阅管理系统(java+Springboot+bootstrap+HTML+maven+Mysql)
  11. Python爬虫实战 | (13) 爬取新浪滚动新闻
  12. 大家好!欢迎来到YANG先森博客......
  13. HDMI 之 HPD .
  14. 泰坦尼克号python数据分析统计服_数据分析可视化——泰坦尼克号幸存者分析(上)...
  15. matlab读取TXT文件数据,二进制文件数据
  16. ChatGPT国内怎么用?官网实在太麻烦了,ChatGPT可以直接国内使用吗?
  17. 四川大学计算机学院夏令营优秀,2018年四川大学全校各学院保研夏令营通知信息大汇总...
  18. Arthur van Hoff
  19. 阿里云ECS云服务器1M宽带能干嘛?
  20. ZooKeeper设置ACL权限控制--增加访问ip白名单

热门文章

  1. Android笔记-GridView实现九宫格布局
  2. MySQL 冷备份操作 + shell 脚本自动备份
  3. c语言五子棋毕业设计,基于c语言五子棋小游戏--本科生毕业设计.doc
  4. 浩方cs全是虚拟服务器,在浩方里面的CS1.5 如何建立服务器
  5. 详解super()函数
  6. 无论你英语多差,只要想学,看了此文必有改变
  7. 《JavaScript高级程序设计》五、引用类型(基本包装类型)
  8. 在 UltraEdit 或 UEStudio 中执行 DOS 或 Windows 命令
  9. Chrome插件-屏蔽浏览器的百度广告
  10. android默认打开adb,android user 版本如何默认adb调试为打开(示例代码)