9.11 小米
第一题 数组移动
过了 0.83
这么解题有一定问题
第二题 2048
A 了
string leftMove(string str) {
vector<int> arr;
stringstream ss(str);
int tem;
while(ss >> tem)
arr.push_back(tem);
int m = arr.size();
stack<int> sta;
for(int i=0; i<m; i++) {
if(!sta.empty() && arr[i] == sta.top()) {
sta.pop();
sta.push(2*arr[i]);
if(++i < m && arr[i] != 0) sta.push(arr[i]);
} else if(arr[i] != 0) sta.push(arr[i]);
}
string res = "";
m -= sta.size();
while(!sta.empty()) {
res = to_string(sta.top()) + ' ' + res;
sta.pop();
}
for(; m>0; m--)
res += "0 ";
if(res.back() == ' ') res.pop_back();
return res;
}
string solution(vector < string > input) {
string res = "";
for(auto &it:input)
res += leftMove(it) + "\n";
return res;
}
