牛客網 簡單的資料結構

2021-09-25 04:47:03 字數 1643 閱讀 7690

慄醬有一天在網上衝浪的時候發現了一道很有意思的資料結構題。

該資料結構形如長條形。

一開始該容器為空,有以下七種操作。

1 a從前面插入元素a

2 從前面刪除乙個元素

3 a從後面插入乙個元素

4 從後面刪除乙個元素

5 將整個容器頭尾翻轉

6 輸出個數和所有元素

7 對所有元素進行從小到大排序

只有一組資料,第一行n≤50000,m≤200000, a≤100000 代表最大資料數目和操作次數。

接下來每一行乙個操作如上描述。保證所有操作合法(不會在容器為空時刪除元素)。

6、7操作共計不會超過10次。

當執行6操作時,第一行先輸出當前的個數,然後從頭到尾按順序輸出,每兩個元素之間用乙個空格隔開,末尾不能有空格。
10 9

1 13 5

3 4645

676

3

1 5 4

25 1

21 5

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 131072k,其他語言262144k

64bit io format: %lld

使用vector

#include #include #include using namespace std;

int main()

else if(op == 2)else if (op == 3)else if (op == 4)else if (op == 5)else if (op == 6)

cout << v[v.size() - 1] << endl;

}else

}return 0;

}

使用vector並作修改後

#include #include #include using namespace std;

int main()

else if(op == 2)else if (op == 3)else if (op == 4)else if (op == 5)else if (op == 6)

cout << v[v.size() - 1] << endl;

}else

}return 0;

}

使用雙端佇列:

#include #include #include using namespace std;

int main()

cout << q[q.size() - 1] << endl;

break;

case 7:

sort(q.begin(), q.end());

break;

default:break;}}

return 0;

}

雙端佇列也可以像陣列一樣訪問,雙端佇列deque是乙個支援在兩端高效插入或刪除元素的連續線性儲存空間。它就像是vector和queue的結合,與vector相比,deque在頭部增刪元素僅需要o(1)的時間,不過牛客網的執行時間誤差有點大,同乙份**執行時間竟然能相差近兩百ms。

牛客網選擇題 資料結構

1 字串www.qq.com所有非空子串 兩個子串如果內容相同則只算乙個 個數是 1024 1018 5550 正確答案 d 解析 初始想法是組合問題,想錯了。字串概念理解錯誤。比如,abc的子串 a b c ab bc abc和乙個空子串 共 3 2 1 1 個 兩個字串 ab,bc,沒有ac.串...

牛客網 簡單題

給出乙個數學式子和兩個關係,知道其他所有數的值,求最後乙個的值 這道題目關鍵點有兩個 1.1.1.一開始的式子其實自然對數e ee的求值公式 2.2.2.對於題目要求的任意保留小數,我們可以用到c c c 中的ios iosios cout include include include inclu...

牛客網資料開發題庫 牛客網資料庫SQL實戰(1)

查詢最晚入職員工的所有資訊 入門 需要查詢最晚入職員工的資訊,即查詢hire date最大的資料,使用倒序並取第乙個人即可。select from employees order by hire date desc limit 0,1 desc 使用order by時在後面加上desc表示倒序,即從...