Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12], after calling your function,
nums should be [1, 3, 12, 0, 0].
Note:
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
#include <vector>
#include <iostream>
using namespace std;
// if we dont care about the order.
void moveZeros(vector<int>& nums) {
if(nums.size() == 0) return;
int i = 0;
int j = nums.size() - 1;
while(i < j) {
if(nums[i] == 0) {
swap(nums[i], nums[j]);
j--;
} else {
i++;
}
}
}
// if we want to keep the order.
void moveZerosII(vector<int>& nums) {
if(nums.size() <= 1) return;
int i = 0, j = 0;
while(j < nums.size()) {
if(nums[j] != 0) {
nums[i++] = nums[j++];
} else {
j++;
}
}
while(i < nums.size()) {
nums[i++] = 0;
}
}
int main(void) {
vector<int> nums;
nums.push_back(0);
nums.push_back(1);
nums.push_back(0);
nums.push_back(3);
nums.push_back(12);
<pre name="code" class="cpp"> // moveZeros(nums); moveZerosII(nums); for(int i = 0; i < nums.size(); ++i) { cout << nums[i] << endl; } cout << endl;}
本文探讨了移动开发与前端开发的整合技术,包括跨平台开发、混合应用开发、响应式布局等关键概念和实践案例,旨在帮助开发者提高开发效率,实现多平台应用的一次开发、多端发布。
1884

被折叠的 条评论
为什么被折叠?



