昨天今日头条笔试,发现好简单,一写出了几个问题,回来才想出来。
一个长度不超过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 << '