首页 > 其他分享 >移动0到数组末尾

移动0到数组末尾

时间:2023-01-27 02:33:05浏览次数:45  
标签:arr const 数组 firstZeroIndex ++ let str 移动 末尾

只移动0,其他顺序不变;必须在元素组进行操作

会改变原数组内的值类型
const moveZeroByReg = (arr = [1,0,2,0,3,0,4,0,5]) => {
    const reg = /0/g
    let str = arr.join('')
    const res = str.match(reg)
    str = str.replace(reg, '')
    str += res.join('')
    arr = str.split('')
    return arr
}
使用splice 时间复杂度O(n^2)
const removeZeroBySplice = (arr = [1,0,2,0,3,0,4,0,5]) => {
    const { length } = arr
    let zeroCount = 0
    for(let i = 0; i < length - zeroCount; i++ ){
        if(arr[i] === 0){
            arr.splice(i,1)
            arr.push(0)
            i--
            zeroCount++
        }
    }
    return arr
}

  双指针

const moveZeroByDoublePointer = (arr = [1,0,2,0,3,0,4,0,5]) => {
    const { length } = arr
    let firstZeroIndex = -1
    for(let i = 0; i < length; i++){
        const value = arr[i]
        if(value === 0){
            if(firstZeroIndex < 0){
                firstZeroIndex = i
            }
        }else {
            if(firstZeroIndex >= 0 ){
                arr[i] = 0
                arr[firstZeroIndex] = value
                firstZeroIndex++
            }
        }
    }
    return arr
}

  

标签:arr,const,数组,firstZeroIndex,++,let,str,移动,末尾
From: https://www.cnblogs.com/zhenjianyu/p/17068475.html

相关文章

  • 力扣---167. 两数之和 II - 输入有序数组
    给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1......
  • 刷刷刷 Day 23 | 108. 将有序数组转换为二叉搜索树
    108.将有序数组转换为二叉搜索树LeetCode题目要求给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满......
  • 06 多维数组
    多维数组这张图更好看一点......
  • 05 数组的使用
    数组的使用代码packagecom.zhan.base04Array;publicclassTest05{//数组的使用publicstaticvoidmain(String[]args){int[]a={1,2,3,4,5}......
  • 前端小技巧之 --- 【对象数组分类并排序】
    当前需求是:把下面的数组,按照index值分类,再按照字母顺序排序exportconstsingerList=[{id:0,index:'Z',name:'周杰伦'},{id:1,index:'X',......
  • 链表和数组哪个实现队列更快
    链表->队列classQueueByLinkList{constructor(){this.queue=null}add(value){if(!this.queue){this.queue={......
  • c++ 数组
              ......
  • vue学习之-----移动端插件FastClick
    1、为什么要使用fastclick(1)移动端的浏览器,默认会在用户点击屏幕300ms延迟之后,才会触发点击事件【为了检查用户是否在做双击】,为了能立即响应用户的点击事件,所以有了fastcl......
  • 解决移动端页面向上移动问题
    在PC上网页是固定的,但是到了移动端滑动到底时,页面总要向上移动一点,查了各种方法都没有效果,后来在CSS里试了试这个方法:    *{            margin......
  • 移动端rem响应式布局开发
    移动端rem响应式布局开发rem是在移动WEBAPP开发中常用的长度单位rem为相对长度单位,相对于根元素(html元素)font-size计算值的倍数根元素(html元素)font-size的默认值为16......