LeetCode in Kotlin

3386. Button with Longest Push Time

Easy

You are given a 2D array events which represents a sequence of events where a child pushes a series of buttons on a keyboard.

Each events[i] = [indexi, timei] indicates that the button at index indexi was pressed at time timei.

Return the index of the button that took the longest time to push. If multiple buttons have the same longest time, return the button with the smallest index.

Example 1:

Input: events = [[1,2],[2,5],[3,9],[1,15]]

Output: 1

Explanation:

Example 2:

Input: events = [[10,5],[1,7]]

Output: 10

Explanation:

Constraints:

Solution

import kotlin.math.min

class Solution {
    fun buttonWithLongestTime(events: Array<IntArray>): Int {
        var ans = 0
        var time = 0
        var last = 0
        for (event in events) {
            val diff = event[1] - last
            if (diff > time) {
                time = diff
                ans = event[0]
            } else if (diff == time) {
                ans = min(ans, event[0])
            }
            last = event[1]
        }
        return ans
    }
}