题目描述

283. 移动零

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

示例:

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

说明:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/move-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答:

解答1:

个人思路:

从尾到头,依次判断,元素是否为 0 ,如果是,并且右边也有不为 0 元素,则该元素与右边元素交换位置,i 移到交换后的位置。

164 ms

/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
for(let i = nums.length; i>=0; i--){
if (nums[i]===0 && nums[i+1] && nums[i+1]!==0){
[nums[i],nums[i+1]] = [nums[i+1],nums[i]]
i+=2
}
}
};

解答2:

已有的最快的解答:56ms

两个指针,一个start指向0,一个end指向length-1;

循环,start小于end的时候,如果start这个index的元素是 0 ,则将这个元素删掉,尾巴上push进一个 0 ,end左移(end--);

如果start这个index的元素不是 0,start++,继续判断……

const moveZeroes = nums => {
const max = nums.length let start = 0
let end = max - 1 while (start < end) {
const item = nums[start]
if (item === 0) {
nums.splice(start, 1)
nums.push(0)
end--
continue
}
start++
} return nums
}

解答3:

用for循环实现类似解答2的思路。96ms

Ps:最早我的解答里,for循环里使用的条件是 i<nums.length,这样会导致多循环后面好多个无用的0,导致超时,引入动态的end即可解决此问题。

var moveZeroes = function(nums) {
let end = nums.length
for(let i = 0; i<end; i++){
if(nums[i]===0){
nums.splice(i,1)
nums.push(0)
i--
end--
}
}
};

【Leetcode】【简单】【283. 移动零】【JavaScript】的更多相关文章

  1. 【LeetCode】283.移动零

    283.移动零 知识点:数组:双指针: 题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例 输入: [0,1,0,3,12] 输出: [1, ...

  2. Leetcode题目283.移动零(简单)

    题目描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原 ...

  3. LeetCode(283. 移动零)

    问题描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数 ...

  4. leetcode.数组.283移动零-Java

    1. 具体题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须 ...

  5. 前端与算法 leetcode 283. 移动零

    目录 # 前端与算法 leetcode 283. 移动零 题目描述 概要 提示 解析 解法一:暴力法 解法二:双指针法 算法 传入[0,1,0,3,12]的运行结果 执行结果 GitHub仓库 # 前 ...

  6. Java实现 LeetCode 283 移动零

    283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必 ...

  7. LeetCode:矩阵置零【73】

    LeetCode:矩阵置零[73] 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   ...

  8. Echo.js – 简单易用的 JavaScript 图片延迟加载插件

    Echo.js 是一个独立的延迟加载图片的 JavaScript 插件.Echo.js 不依赖第三方库,压缩后不到1KB大小. 延迟加载是提高网页首屏显示速度的一种很有效的方法,当图片元素进入窗口可视 ...

  9. 这样leetcode简单题都更完了

    这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...

随机推荐

  1. 谷歌插件:右键搜使用指南.md

    基本功能看插件,说几个自定义搜索的实现 自定义技巧:%s选择的文字或页面或链接,%g转换成GBK字符集,%t转换成BIG5字符集,%p剪贴板内容,%u当前页面域名. 注:这部分内容来自谷歌插件介绍.使 ...

  2. CentOS 7 安装wordpress

    1.安装php 要安装php 7,必须使用下面的命令在Centos7系统上安装并启用epel和remi存储库. 输入一下代码, yum install http://rpms.remirepo.net ...

  3. Jenkins简单入门:下载-安装-配置-构建

    Jenkins简单配置流程 官网下载地址:https://jenkins.io/index.html 1.下载安装Jenkins (1)点击Download Jenkins进入下载页 (2)根据自己运 ...

  4. Mybatis映射文件sql语句注意事项

    1.插入

  5. mysql配置优化的参数

    1.MySQL数据库高效优化解析  Mysql优化是一项非常重要的工作,而且是一项长期的工作,曾经有一个为位DBA前辈说过:mysql的优化,三分配置的优化,七分sql语句的优化. Mysql的优化: ...

  6. js修改css属性值

    推荐用dom.style.setProperty('属性','属性值'); 例如: $("#id")[0].style.setProperty('margin-top','1px' ...

  7. Kali中安装VMwaretools

    VMware Workstation 中 虚拟机选项,安装VMware Tools 选项. 在虚拟机中,打开VMware Tools,将 VMwareTools-10.1.15-6627299.tar ...

  8. 工作总结---CTO(张王岩)的笔记--

    1. 语言的基础:  变量.控制语句.方法 .数组 2. 面向对象  OOP 3. 容器  存储数据.分析数据  介绍[IO  File   字节流    字符流  CommonsIO] input  ...

  9. C++ 编译错误 jump to case label [-fpermissive]

    <花的微笑>--- 钢琴曲,石进 今天再用C++写代码时,出现了编译错误 jump to case label [-fpermissive] 原因:使用switch语句时,再case中定义 ...

  10. FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated;

    /Users/jerryqi/PycharmProjects/DeepLearning/venv/lib/python3.7/site-packages/tensorflow/python/frame ...