[LeetCode 周賽184] 2. 查詢帶鍵的排列(模擬、常規解法)

1. 題目來源

鏈接:5381. 查詢帶鍵的排列

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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章