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.
The array is sorted in increasing order of time.
The time taken to press a button is the difference in time between consecutive button presses. The time for the first button is simply the time at which it was pressed.
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 smallestindex.
Input: events =[[1,2],[2,5],[3,9],[1,15]]Output: 1Explanation:
* Button with index 1is pressed at time 2.* Button with index 2is pressed at time 5, so it took `5 - 2 = 3` units of time.* Button with index 3is pressed at time 9, so it took `9 - 5 = 4` units of time.* Button with index 1is pressed again at time 15, so it took `15 - 9 = 6` units of time.
Input: events =[[10,5],[1,7]]Output: 10Explanation:
* Button with index 10is pressed at time 5.* Button with index 1is pressed at time 7, so it took `7 - 5 = 2` units of time.
For each event, compute the time taken to push the button (difference from previous event). Track the maximum time and the smallest index with that time.
#include<vector>usingnamespace std;
classSolution {
public:int buttonWithLongestPushTime(vector<vector<int>>& events) {
int maxTime = events[0][1], res = events[0][0];
for (int i =1; i < events.size(); ++i) {
int t = events[i][1] - events[i-1][1];
if (t > maxTime || (t == maxTime && events[i][0] < res)) {
maxTime = t;
res = events[i][0];
}
}
return res;
}
};
1
2
3
4
5
6
7
8
9
10
11
funcbuttonWithLongestPushTime(events [][]int) int {
maxTime, res:=events[0][1], events[0][0]
fori:=1; i < len(events); i++ {
t:=events[i][1] -events[i-1][1]
ift > maxTime|| (t==maxTime&&events[i][0] < res) {
maxTime = tres = events[i][0]
}
}
returnres}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
publicintbuttonWithLongestPushTime(int[][] events) {
int maxTime = events[0][1];
int res = events[0][0];
for (int i = 1; i < events.length; i++) {
int t = events[i][1]- events[i-1][1];
if (t > maxTime || (t == maxTime && events[i][0]< res)) {
maxTime = t;
res = events[i][0];
}
}
return res;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
funbuttonWithLongestPushTime(events: Array<IntArray>): Int {
var maxTime = events[0][1]
var res = events[0][0]
for (i in1 until events.size) {
val t = events[i][1] - events[i-1][1]
if (t > maxTime || (t == maxTime && events[i][0] < res)) {
maxTime = t
res = events[i][0]
}
}
return res
}
}
1
2
3
4
5
6
7
8
9
10
classSolution:
defbuttonWithLongestPushTime(self, events):
max_time = events[0][1]
res = events[0][0]
for i in range(1, len(events)):
t = events[i][1] - events[i-1][1]
if t > max_time or (t == max_time and events[i][0] < res):
max_time = t
res = events[i][0]
return res
1
2
3
4
5
6
7
8
9
10
11
12
13
14
impl Solution {
pubfnbutton_with_longest_push_time(events: Vec<Vec<i32>>) -> i32 {
letmut max_time = events[0][1];
letmut res = events[0][0];
for i in1..events.len() {
let t = events[i][1] - events[i-1][1];
if t > max_time || (t == max_time && events[i][0] < res) {
max_time = t;
res = events[i][0];
}
}
res
}
}