Identify Most Used Apps - codepath/compsci_guides GitHub Wiki

Unit 4 Session 1 Advanced (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • Q: What is the structure of the input?

    • A: The input is a dictionary where the keys are app names (strings) and the values are the total time spent on each app (integers).
  • Q: What is the output?

    • A: The output is a string representing the name of the app with the highest total screen time.
  • Q: What should the function return if multiple apps have the same highest screen time?

    • A: The function should return any one of the apps with the highest screen time.
  • Q: Are there any constraints on the input, such as the number of apps or time values?

    • A: It is assumed that the dictionary contains non-negative integer values for the time spent on each app.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Iterate through the dictionary to find the app with the maximum total screen time.

1) Initialize two variables: `max_time` to -1 and `most_used` to `None`.
2) For each `app, time` in `screen_time.items()`:
   a) If `time` is greater than `max_time`, update `max_time` to `time` and `most_used` to `app`.
3) Return `most_used`.

**⚠️ Common Mistakes**

- Forgetting to handle the case where the input dictionary is empty (though it's assumed there is at least one app in the input).
- Not properly updating the `max_time` and `most_used` variables, leading to incorrect results.

I-mplement

def most_used_app(screen_time):
    max_time = -1
    most_used = None

    for app, time in screen_time.items():
        if time > max_time:
            max_time = time
            most_used = app

    return most_used