解題思路
解法參考其他大神,沒指望自己能想出來,只是順手紀錄幾個部分。
pair sorting 是預設 sort first element。
以及
sort(rbegin(), rend()) 是由大排序到小。
程式碼
class Solution { public: long long maxScore(vector<int>& nums1, vector<int>& nums2, int k) { vector<pair<int, int>> v; for(int i=0; i<nums1.size(); i++) v.push_back({nums2[i], nums1[i]}); sort(rbegin(v), rend(v)); long long ans = 0, currentSum = 0; priority_queue<int, vector<int>, greater<int>> pq; for(auto [second, first] : v) { pq.emplace(first); currentSum += first; if(pq.size() > k) { currentSum -= pq.top(); pq.pop(); } if(pq.size() == k) ans = max(ans, currentSum * second); } return ans; } };
沒有留言:
張貼留言