昨天今日头条笔试,发现好简单,一写出了几个问题,回来才想出来。
一个长度不超过10000的整数数组,里面有若干个0,请事先一段代码,将数组中值为0的元素移动到数组的最前面,其余元素相对位置保持不变。
#include <iostream> #include <vector>using namespace std;// 此处忘记引用了 void moveZero(vector<int> &in){int cnt = 0;for (int i = in.size() - 1; i >= 0; i--){if (in[i] == 0) {cnt++;}// 此处下标搞错了else {in[i + cnt] = in[i];}}for (int i = 0; i < cnt; i++){in[i] = 0;} }int main() {int a[] = { 1, 2, 0, 0, 3, 0, 0, 4, 0, 5, 1, 0, 6, 7 };vector<int> ivector(a, a + sizeof(a)/sizeof(int));moveZero(ivector);for (auto item:ivector){cout << item << '\0';}return 0; }