【题目】 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 【示例】 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 【说明】 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 【代码】
class Solution {
public:
void moveZeroes(vector
<int>& nums
) {
int step
=nums
.size(),cnt
=0;
for(int i
=0;i
<step
;i
++)
if(nums
[i
]!=0)
nums
[cnt
++]=nums
[i
];
for(int i
=cnt
;i
<step
;i
++)
nums
[i
]=0;
}
};
【方法二】
class Solution {
public:
void moveZeroes(vector
<int>& nums
) {
int step
=nums
.size(),cnt
=0;
for(int i
=0;i
<step
;i
++)
if(nums
[i
]!=0)
swap(nums
[cnt
++],nums
[i
]);
}
};