C语言重构【283】移动零

it2025-04-03  0

文章目录

所有题目源代码:[Git地址](https://github.com/ch98road/leetcode)题目方案:复杂度计算

所有题目源代码:Git地址

题目

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。

方案:

class Solution { public: void moveZeroes(vector<int> &nums) { int len = nums.size(); int i = 0; while (i < len && nums[i] != 0) i++; //移动到第一个0元素的位置 int fast = i; for (; i < len; i++) { if (nums[i] != 0) { nums[fast++] = nums[i]; nums[i] = 0; } } } };
复杂度计算
时间复杂度:O(n)空间复杂度:O(1)
最新回复(0)