【leetcodeブラシノート】5118.フライト予約統計
5108 ワード
タイトルリンク:https://leetcode-cn.com/contest/weekly-contest-144/problems/corporate-flight-bookings/
1.テーマ
ここにはn便があり、それぞれ1からnまで番号が付けられています.
ここにフライト予約表があります.表のi番目の予約記録bookings[i]=[i,j,k]は、iからjまでのフライトごとにk席を予約したことを意味します.
長さnの配列answerを返し、フライト番号順に各フライトで予約した座席数を返してください.
2.考え方
直接暴力計算はタイムアウトになるので、接頭辞と配列で答えを計算するには、区間端点を処理し、区間始点に所定数を加え、終点の次に所定数を減らし、最後にans[i]=ans[i]+ans[i-1](i>=1)
3.コード
1.テーマ
ここにはn便があり、それぞれ1からnまで番号が付けられています.
ここにフライト予約表があります.表のi番目の予約記録bookings[i]=[i,j,k]は、iからjまでのフライトごとにk席を予約したことを意味します.
長さnの配列answerを返し、フライト番号順に各フライトで予約した座席数を返してください.
2.考え方
直接暴力計算はタイムアウトになるので、接頭辞と配列で答えを計算するには、区間端点を処理し、区間始点に所定数を加え、終点の次に所定数を減らし、最後にans[i]=ans[i]+ans[i-1](i>=1)
3.コード
class Solution
{
public:
vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n)
{
vector<int>ans(n);
for(int i = 0; i < bookings.size(); i++)
{
int l = bookings[i][0];
int r = bookings[i][1];
int c = bookings[i][2];
ans[l-1] += c;
if(r<n)
ans[r] -= c;
}
for(int i = 1; i < n; i++)
{
ans[i]=ans[i-1]+ans[i];
}
return ans;
}
};