2024-12-16 Daily Challenge
Today I have done leetcode's December LeetCoding Challenge with cpp
.
December LeetCoding Challenge 16
Description
Final Array State After K Multiplication Operations I
You are given an integer array nums
, an integer k
, and an integer multiplier
.
You need to perform k
operations on nums
. In each operation:
- Find the minimum value
x
innums
. If there are multiple occurrences of the minimum value, select the one that appears first. - Replace the selected minimum value
x
withx * multiplier
.
Return an integer array denoting the final state of nums
after performing all k
operations.
Example 1:
Input: nums = [2,1,3,5,6], k = 5, multiplier = 2
Output: [8,4,6,5,6]
Explanation:
Operation | Result |
---|---|
After operation 1 | [2, 2, 3, 5, 6] |
After operation 2 | [4, 2, 3, 5, 6] |
After operation 3 | [4, 4, 3, 5, 6] |
After operation 4 | [4, 4, 6, 5, 6] |
After operation 5 | [8, 4, 6, 5, 6] |
Example 2:
Input: nums = [1,2], k = 3, multiplier = 4
Output: [16,8]
Explanation:
Operation | Result |
---|---|
After operation 1 | [4, 2] |
After operation 2 | [4, 8] |
After operation 3 | [16, 8] |
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
1 <= k <= 10
1 <= multiplier <= 5
Solution
class Solution {
public:
vector<int> getFinalState(vector<int>& nums, int k, int multiplier) {
using pi = pair<int, int>;
priority_queue<pi, vector<pi>, greater<pi>> pq;
for(int i = 0; i < nums.size(); ++i) {
pq.push({nums[i], i});
}
while(k--) {
auto [n, pos] = pq.top();
pq.pop();
pq.push({n * multiplier, pos});
}
while(pq.size()) {
auto [n, pos] = pq.top();
pq.pop();
nums[pos] = n;
}
return nums;
}
};
// Accepted
// 737/737 cases passed (6 ms)
// Your runtime beats 11.17 % of cpp submissions
// Your memory usage beats 25.16 % of cpp submissions (27.8 MB)