数组里的零全部移动到后面,其余数字顺序保持不变
双指针的两种方法
方法一:时间复杂度logN,空间复杂度1
nums = [1,2,0,5,7,0] low = 0 # 指向非零部分的最后一个位置 fast = 0 # 遍历列表元素 n = len(nums) while fast < n: # 走一遍,原始空间上已经存有非零数字 if nums[fast]!=0: # 遇到非零元素将其存到nums对应low位置,同时low指向一下位置 nums[low]=nums[fast] low += 1 fast += 1 while low < n: # 后半部分补零 nums[low]=0 low += 1 nums
方法二:零和非零元素互换
nums = [1,2,0,5,7,0] low, fast = -1, 0 # low记录非零元素的最后一个位置,fast记录不是零元素位置和low+1位置元素互换 n = len(nums) while fast<n: # 走一遍, if nums[fast]!=0: low += 1 nums[low], nums[fast] = nums[fast], nums[low] fast += 1 nums
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)