文章目录
1. 题目来源
2. 题目说明
3. 题目解析
方法一:模拟+常规解法
也是一道水题…数据范围决定了可以暴力模拟做。但是这题的意义又在哪呢…
直接开辟一个辅助数组,每次拿到待查数组的元素后在辅助数组中进行查找,再进行从后向前的简单移位就解决了。很常规的一道题。
参见代码如下:
// 执行用时 :36 ms, 在所有 C++ 提交中击败了100.00%的用户
// 内存消耗 :8.6 MB, 在所有 C++ 提交中击败了100.00%的用户
class Solution {
public:
vector<int> processQueries(vector<int>& q, int m) {
vector<int> vt;
int tmp[m + 1];
memset(tmp, 0, sizeof(tmp));
for (int i = 1; i < m + 1; ++i) tmp[i] = i;
for (int i = 0; i < q.size(); ++i) {
for (int j = 1; j < m + 1; ++j) {
if (q[i] == tmp[j]) {
vt.push_back(j - 1);
int str = tmp[j];
for (int k = j; k > 1; --k) tmp[k] = tmp[k - 1];
tmp[1] = str;
}
}
}
return vt;
}
};