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之路的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 1月9日每日一题 1629. 按键持续时间最长的键

1629. 按键持续时间最长的键

LeetCode #1629. Slowest Key

tm1629 只用4个按键 怎么读取

如何获得按键的持续时间?

2.实现虚拟按键的持续按压