283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
========================================================
用双指针,时间复杂度是O(n),空间复杂度O(1)
上代码:
class Solution { public: void moveZeroes(vector<int>& nums) { if (nums.size() <= 1) return; int a = 0, b = 1; while (b < nums.size()&&a<nums.size()) { if (nums[a] == 0 && nums[b] != 0) { nums[a] = nums[b]; nums[b] = 0; } if (!(nums[a] == 0 && nums[b] == 0&&b!= nums.size() - 1)) a++; if (nums.size() - 1 != b) b++; } } };
标签:
双指针
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了