[LeetCode][JavaScript]Move Zeroes
2015-09-20 00:40
561 查看
Move Zeroes
Given an arraynums, write a function to move all
0's to the end of it while maintaining the relative order of the non-zero elements.
For example, given
nums = [0, 1, 0, 3, 12], after calling your function,
numsshould be
[1, 3, 12, 0, 0].
Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
https://leetcode.com/problems/move-zeroes/
把数组中所有的零放到最后,不能简单地再开一个数组。
第一种优雅的做法,开一个变量count=0,把数组中不为零的数,按顺序移动到下标为count的位置上,每移动一个count++,最后补上0。
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var moveZeroes = function(nums) { var count = 0; for(var i = 0; i < nums.length; i++){ if(nums[i] !== 0){ nums[count] = nums[i]; count++; } } for(; count < nums.length ; count++){ nums[count] = 0; } };
第二种调用了强大的splice方法,先记录下0的位置,从后往前把0从数组中删掉(从前往后会打乱下标的顺序),最后再补齐。
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var moveZeroes = function(nums) { var indexArr = [], i; for(i = 0; i < nums.length; i++){ if(nums[i] === 0){ indexArr.push(i); } } for(i = indexArr.length - 1; i >= 0; i--){ nums.splice(indexArr[i], 1); } for(i = 0; i < indexArr.length; i++){ nums.push(0); } };
相关文章推荐
- servlet&jsp
- 犀牛——第13章 13.1 客户端JavaScript
- url携带的参数转成json格式
- 基于JavaScript实现生成名片、链接等二维码
- js自动判断电脑访问和手机访问,跳转指定的网址
- Ember.js 入门指南——{{action}} 助手
- JS eval()函数处理json字符串
- json一分钟学习
- Jsp 乱码处理
- 原生js创建虚拟数字键盘输入
- JS的单例模式
- Thymeleaf Javascript 取值
- Thymeleaf Javascript 取值
- Thymeleaf Javascript 取值
- Thymeleaf Javascript 取值
- json对象和json字符串有啥区别啊
- Jsp和Servlet的联系与区别
- Verlet-js JavaScript 物理引擎
- JavaScript网页脚本编程良好习惯
- 豆瓣API使用介绍及通过ajax跨域获取url的json数据的方法