Skip to content

Instantly share code, notes, and snippets.

@igavrysh
Created December 17, 2024 00:04
Show Gist options
  • Save igavrysh/9e6bdc767d55aa11a4ba63b8ac77f0a9 to your computer and use it in GitHub Desktop.
Save igavrysh/9e6bdc767d55aa11a4ba63b8ac77f0a9 to your computer and use it in GitHub Desktop.
3264. Final Array State After K Multiplication Operations I
/**
3264. Final Array State After K Multiplication Operations I
https://leetcode.com/problems/final-array-state-after-k-multiplication-operations-i
Easy
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 in nums. If there are multiple occurrences of the minimum value, select the one that appears first.
Replace the selected minimum value x with x * 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
*/
class Solution {
public int[] getFinalState(int[] nums, int k, int multiplier) {
PriorityQueue<int[]> pq = new PriorityQueue<>((int[] p1, int[] p2) -> {
if (p1[1] == p2[1]) {
return Integer.compare(p1[0], p2[0]);
}
return Integer.compare(p1[1], p2[1]);
});
for (int i = 0; i < nums.length; i++) {
pq.offer(new int[]{i, nums[i]});
}
while (k > 0) {
int[] p = pq.poll();
p[1] = p[1] * multiplier;
nums[p[0]] = p[1];
pq.offer(p);
k--;
}
return nums;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment