LeetCode 1629 按键持续时间最长的按键[遍历] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1629 按键持续时间最长的按键[遍历] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
最容易想到的思路是统计每个字符的按键时长,然后再遍历一遍获得最大市场的字符,代码如下:
class Solution
public:
char slowestKey(vector<int>& releaseTimes, string keysPressed)
int n = releaseTimes.size();
vector<int> res(26, 0);
for(int i = 0; i < n; i ++)
if(i != 0)
res[keysPressed[i] - 'a'] = max(res[keysPressed[i] - 'a'], releaseTimes[i] - releaseTimes[i - 1]);
else
res[keysPressed[i] - 'a'] = max(res[keysPressed[i] - 'a'], releaseTimes[i]);
int cur = 0;
char c = 'a';
for(int i = 0; i < 26; i ++)
if(res[i] >= cur)
cur = res[i];
c = i + 'a';
else continue;
return c;
;
当然一次遍历就可以直接完成操作,而且也不需要额外的统计空间,一个变量记录最大的时间,一个记录最大时间的字符,代码如下:
class Solution
public:
char slowestKey(vector<int>& releaseTimes, string keysPressed)
int n = releaseTimes.size();
int cur = releaseTimes[0];
char c = keysPressed[0];
for(int i = 1; i < n; i ++)
if(releaseTimes[i] - releaseTimes[i - 1] > cur|| releaseTimes[i] - releaseTimes[i - 1] == cur && keysPressed[i] > c)
cur = releaseTimes[i] - releaseTimes[i - 1];
c = keysPressed[i];
return c;
;
以上是关于LeetCode 1629 按键持续时间最长的按键[遍历] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章