3264 - 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
xinnums. If there are multiple occurrences of the minimum value, select the one that appears first. - Replace the selected minimum value
xwithx * 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 <= 1001 <= nums[i] <= 1001 <= k <= 101 <= multiplier <= 5
C++
class Solution { public: vector<int> getFinalState(vector<int>& nums, int k, int multiplier) { auto cmp = [&nums](int i, int j) { return nums[i] == nums[j] ? i > j : nums[i] > nums[j]; }; priority_queue<int, vector<int>, decltype(cmp)> pq(cmp); for (int i = 0; i < nums.size(); ++i) { pq.push(i); } while (k--) { int i = pq.top(); pq.pop(); nums[i] *= multiplier; pq.push(i); } return nums; } };
JAVA
class Solution {
public int[] getFinalState(int[] nums, int k, int multiplier) {
PriorityQueue<Integer> pq
= new PriorityQueue<>((i, j) -> nums[i] - nums[j] == 0 ? i - j : nums[i] - nums[j]);
for (int i = 0; i < nums.length; i++) {
pq.offer(i);
}
while (k-- > 0) {
int i = pq.poll();
nums[i] *= multiplier;
pq.offer(i);
}
return nums;
}
}PYTHON
class Solution { public: vector<int> getFinalState(vector<int>& nums, int k, int multiplier) { auto cmp = [&nums](int i, int j) { return nums[i] == nums[j] ? i > j : nums[i] > nums[j]; }; priority_queue<int, vector<int>, decltype(cmp)> pq(cmp); for (int i = 0; i < nums.size(); ++i) { pq.push(i); } while (k--) { int i = pq.top(); pq.pop(); nums[i] *= multiplier; pq.push(i); } return nums; } };
Comments
Post a Comment