如何将所有为零的元素移动到数组末尾?

2024-04-16

编写一个函数,该函数接受一个值数组,并将所有为零的元素移动到数组末尾,否则保留数组的顺序。零元素还必须保持它们出现的顺序。

零元素由 0 或“0”定义。某些测试可能包含非数字文字的元素。

不允许使用任何临时数组或对象。也不允许使用任何 Array.prototype 或 Object.prototype 方法。因此不允许使用 array.push 或 splice() 。

我试过这个:

function removeZeros(nums) {

   for(let i = nums.length - 1; i >= 0 ; i--){
    if(nums[i] === 0){
      nums.splice(i, 1);
      nums.push(0);
    }
   }
   return nums;
}

input:

[7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14]

预期的:

[7, 2, 3, 4, 6, 13, 78, 19, 14, 0, 0, 0, 0, 0, 0]

Actual:

[7, 2, 3, 4, 6, 13, 78, 19, 14, 0, 0, 0, 0, 0, 0]

结果是正确的,但我需要在没有 array.push() 或 array.splice() 的情况下执行此操作


  • 取原数组的长度
  • 从原始数组中过滤非零值
  • 根据过滤后的数组和原始数组的长度差异在末尾添加零
function removeZeros(nums) {
   let originalLen = nums.length
   let nonZero = nums.filter(Boolean)
   return [...nonZero,...new Array(originalLen-nonZero.length).fill(0)]
}

console.log(removeZeros([7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14]))

也不允许使用任何 Array.prototype 或 Object.prototype 方法

function removeZeros(nums) {
   let originalLen = nums.length
   let final = []
   for(let i=0;i<nums.length; i++){
    if(nums[i]) final = [...final, nums[i]]
   }
   let lenDiff = originalLen-final.length
   while(lenDiff){
    final = [...final,0]
    lenDiff--
   }
   return final
}

console.log(removeZeros([7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将所有为零的元素移动到数组末尾? 的相关文章

随机推荐

  • 如何使用 Visual Studio 2008 对 C# Web 服务进行单元测试

    您应该如何使用 Visual Studio 2008 对 C 中的 Web 服务进行单元测试 当我生成单元测试时 它会添加对 Web 服务类的实际引用 而不是 Web 引用 它设置以下中指定的属性 http msdn microsoft c
  • 检查 netcdf linux 库版本

    如何确定我的系统中安装了哪个版本的 netcdf 库 有命令行吗 我尝试搜索 netcdf 发现了一堆文件 但无法确定版本号 有没有命令可以检查已安装的任何版本 我在ubuntu上 netCDF 提供nc config用于此目的的命令行工具
  • 在 Rust 中应该如何进行指针算术?

    我知道答案是 你不应该 但为了争论 如何should你做吧 例如 如果您想编写一个替代方案Vec
  • Apache 服务器上的 React、js

    我正在一个react js项目中工作 我有一个安装了apache服务器的云服务器 我的问题是我可以在 apache 服务器上设置我的反应项目吗 正如达文 泰伦所说 react是一种浏览器技术 除了客户端浏览器从服务器下载应用程序之外 一切都
  • 用户模型中带有 uuid 列的 Laravel Sanctum 不保存 tokenable_id

    我尝试使用Laravel 8 x and Laravel sanctum 2 14 2验证我的 API 和 UUID 作为我的主密钥User model 我的定制PersonalAccessToken model use Illuminat
  • 在 Google Places Apis 中搜索特定城市内的位置

    我正在使用 Google Places Apis 来过滤特定城市内的结果 我能够过滤结果 但它也会显示该城市之外的结果 例如 如果我设置德里市的 LatLngBounds 并搜索纽约市的位置 它还给了我纽约市的结果 但纽约的 LatLng
  • 为什么要实现 IEquatable 接口

    我一直在阅读文章并在一定程度上理解接口 但是 如果我想纠正我自己的自定义 Equals 方法 似乎我可以在不实现 IEquatable 接口的情况下做到这一点 一个例子 using System using System Collectio
  • Python 如何在一行中分配多个变量?

    Python 在一行中分配多个变量实际上执行了哪些步骤 我以前经常做 A 0 A 1 A 1 A 0 来交换 但是最近在分配链表时遇到了一个错误 insert self gt node gt def insert next self nod
  • Spark中连接两个RDD

    我有两个 rdd 一个 rdd 只有一列 其他有两列来连接键上的两个 RDD 我添加了虚拟值 0 是否有其他有效的方法可以使用 join 来执行此操作 val lines sc textFile ml 100k u data val mov
  • conda 内部是如何工作的?

    我搜索了一段时间但找不到满意的答案 康达 http conda pydata org http conda pydata org 在内部工作 任何细节欢迎 此外 由于它与 python 无关并且显然工作得如此良好和流畅 为什么它不被用作像
  • Spring Boot - NoClassDefFoundError:ch/qos/logback/classic/Level

    我创建了一个普通的 Spring Boot 应用程序 1 5 9 RELEASE 但是当我Run As gt Spring Boot App 在 Eclipse Oxygen 中 我明白 SLF4J Failed to load class
  • 在 R Markdown 中将数据框显示为表格

    In knitr我想使用 kable 包添加一个 小 数据框作为表格 output html document r knitr kable mtcars 1 5 1 5 format html 这将返回一个如上所述的紧凑表 同时将其更改为f
  • 机器人框架 - 清除元素文本关键字不起作用

    我们有一个 html 结构的文本字段 如下所示
  • 在 CSS 流布局中自动调整图像大小以模拟 html 表格布局

    我有一个图像 根据屏幕分辨率 它会在 CSS 流布局中下降到看不见的位置 因为我已将其宽度和高度设置为静态值 CSS 流布局中是否有一种方法可以在有人缩小浏览器窗口时自动调整图像大小 我已经在 html table 布局中看到了这一点 并且
  • 具有双重重置的复数累加和

    我试图遵循一些关于何时将数据分组到图表中的规则 我将如何处理这个数据框 A tibble 11 x 8 assay year qtr invalid valid total assays hfr predicted inv
  • 使用 Active Directory 集成身份验证的 Azure SQL 数据库连接无法打开

    我正在尝试使用类似于以下内容的连接字符串通过实体框架连接到 Azure SQL 数据库 Data Source
  • Android Studio - Gradle:如何替换文件中的变量

    我对 Gradle 相当陌生 一直在使用 Eclipse 和 Ant 来完成所有构建 在我们的应用程序中 我们有一个 config properties 文件 位于与 src 和 res 等处于同一级别的 asset 文件夹中 在此文件中
  • 如何强制 Hibernate 将日期返回为 java.util.Date 而不是时间戳?

    情况 我有一个带有 java util Date 类型变量的持久类 import java util Date Entity Table name prd period Cache usage CacheConcurrencyStrateg
  • PyPy 明显慢于 CPython

    我一直在测试我制作的缓存系统 其目的是加速 Django Web 应用程序 它将所有内容存储在内存中 根据 cProfile 我的测试中的大部分时间都花在 QuerySet clone 内 结果证明效率非常低 考虑到实现 这实际上并不奇怪
  • 如何将所有为零的元素移动到数组末尾?

    编写一个函数 该函数接受一个值数组 并将所有为零的元素移动到数组末尾 否则保留数组的顺序 零元素还必须保持它们出现的顺序 零元素由 0 或 0 定义 某些测试可能包含非数字文字的元素 不允许使用任何临时数组或对象 也不允许使用任何 Arra