Problem · Array

Horizontal Pod Autoscaler

Learn this problem
MediumSnowflake logoSnowflakeINTERNOA
See Snowflake hiring insights

Problem statement

Developers are optimizing their horizontal pod autoscaler for their microservices. There are n microservices, and the number of pods for the ith microservice is pods[i].

According to traffic patterns, the number of pods for a service can increase or decrease. Additionally, at specific times when there is expected traffic, all services with fewer than x pods are assigned x pods.

There is an event log of size m, described as a 2D array logs where logs[i] is an array of integers of size 3. The logs have the following interpretations:

  • [1, p, x]: The number of pods of the pth microservice is changed to x (1 <= p <= n).
  • [2, -1, x]: All microservices whose number of pods is less than x are changed to x.

Find the resulting number of pods for each microservice after processing all the logs.

Function

findPodCount(pods: int[], logs: int[][]) → int[]

Complete the function findPodCount in the editor below.

findPodCount has the following parameters:

  • int pods[n]: the number of pods for the microservices
  • int logs[m][3]: the event log of the horizontal pod autoscaler

Returns

int[n]: the ith element represents the final pod count of the ith microservice

Examples

Example 1

pods = [2, 4, 1, 4]logs = [[1, 2, 30], [1, 3, 4], [2, -1, 10]]return = [10, 30, 10, 10]
Current Number of
Pods
LogResulting
Pods
[2, 4, 1, 4]

[1, 2, 30]

2nd member's pod count
is changed to 30.

[2, 30,
1, 4]
[2, 30, 1, 4]

[1, 3, 4]

3rd member's pod count
is changed to 4.

[2, 30,
4, 4]
[2, 30, 4, 4]

[2, -1, 10]

All the microservices with fewer
than 10 pods
are changed to 10.

[10, 30,
10, 10]

The final number of pods is [10, 30, 10, 10].

Example 2

pods = [3, 50, 2, 1, 10]logs = [[1, 2, 0], [2, -1, 8], [1, 3, 20]]return = [8, 8, 20, 8, 10]

Added from another source image. 🦒

Constraints

  • 1 <= n <= 2 * 10^5
  • 1 <= pods[i] <= 10^9
  • 1 <= m <= 2 * 10^5
  • 1 <= p <= n
  • 0 <= x <= 10^9

More Snowflake problems

drafts saved locally
public int[] findPodCount(int[] pods, int[][] logs) {
  // write your code here
}
pods[2, 4, 1, 4]
logs[[1, 2, 30], [1, 3, 4], [2, -1, 10]]
expected[10, 30, 10, 10]
checking account