系列文章目录
前言
一、移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
相关标签
数组
双指针
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2ba4i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、使用步骤
代码如下:
方法一:不为0的提取到前面来
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int len=nums.size();
int l=0;
for(int r=0; r<len;r++){
if(nums[r] !=0){
nums[l] = nums[r];
l++;
}
}
while( l <len){
nums[l] =0;
l++;
}
}
};
执行用时:
4 ms
, 在所有 C++ 提交中击败了
92.24%
的用户
内存消耗:
8.7 MB
, 在所有 C++ 提交中击败了
59.93%
的用户
方法二:双指针法
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int len=nums.size();
int l=0;
for(int r=0; r<len;r++){
if(nums[r] !=0){
int temp = nums[l];
nums[l] = nums[r];
nums[r] =temp;
l++;
}
}
}
};
总结
以上就是今天要讲的内容