[LeetCode] Minimum Costs Using the Train Line

2361. Minimum Costs Using the Train Line

A train line going through a city has two routes, the regular route and the express route. Both routes go through the same n + 1 stops labeled from 0 to n. Initially, you start on the regular route at stop 0.

You are given two 1-indexed integer arrays regular and express, both of length n. regular[i] describes the cost it takes to go from stop i - 1 to stop i using the regular route, and express[i] describes the cost it takes to go from stop i - 1 to stop i using the express route.

You are also given an integer expressCost which represents the cost to transfer from the regular route to the express route.

Note that:

  • There is no cost to transfer from the express route back to the regular route.
  • You pay expressCost every time you transfer from the regular route to the express route.
  • There is no extra cost to stay on the express route.

Return a 1-indexed array costs of length n, where costs[i] is the minimum cost to reach stop i from stop 0.

Note that a stop can be counted as reached from either route.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
vector<long long> minimumCosts(vector<int>& regular, vector<int>& express, int expressCost) {
vector<long long> res;
long long rdp = 0, edp = expressCost;
for(int i = 0; i < regular.size(); i++) {
long long rdpp = min(rdp, edp) + regular[i];
long long edpp = min(rdp + expressCost, edp) + express[i];

rdp = rdpp;
edp = edpp;

res.push_back(min(rdp, edp));
}

return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/08/03/PS/LeetCode/minimum-costs-using-the-train-line/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.