移动0到数组末尾
只移动0,其他顺序不变;必须在元素组进行操作
1 | 会改变原数组内的值类型 |
1 2 3 4 5 6 7 8 9 | 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 } |
1 | 使用splice 时间复杂度O(n^2) |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 } |
双指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ const moveZeroes = (nums) => { let zeroIndex = nums.indexOf(0) if (zeroIndex === -1) return nums for ( let i = 0; i < nums.length; i++) { const v = nums[i] if (v !== 0 && i > zeroIndex) { [nums[zeroIndex], nums[i]] = [nums[i], nums[zeroIndex]] zeroIndex++ } } return nums }; |
以自己现在的努力程度,还没有资格和别人拼天赋
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具