가장 느린 키 Leetcode 솔루션

난이도 쉽게
자주 묻는 질문 아마존
알고리즘 배열 코딩 인터뷰 인터뷰 준비 리트코드 LeetCodeSolutions조회수 38

가장 느린 키 Leetcode 솔루션 문제는 눌린 키 시퀀스를 제공합니다. 우리는 또한 정렬 또는 이러한 키가 해제 된 횟수의 벡터입니다. 키 시퀀스는 문자열 형식으로 제공됩니다. 그래서 문제는 우리에게 가장 느린 키를 찾도록 요청했는데, 작동하는 데 가장 오랜 시간이 걸립니다. 키가 작동하거나 입력하는 데 걸리는 시간은 현재 키와 이전 키를 눌렀을 때 놓는 시간의 차이입니다. 같은 시간이 걸리는 두 개 이상의 키를 발견하는 경우. 그래서 우리는 사 전적으로 가장 큰 키를 반환합니다. 솔루션에 대해 자세히 살펴보기 전에 먼저 몇 가지 예를 살펴 보겠습니다.

가장 느린 키 Leetcode 솔루션

releaseTimes = [9,29,49,50], keysPressed = "cbcd"
"c"

설명 : 각 키에 걸리는 시간은 9, 20, 20, 1입니다.이 릴리스 시간은 각각 키 c, b, c 및 d에 대한 것입니다. 키 b와 c의 해제 시간이 동일하기 때문에. 어휘 학적으로 가장 큰 키인 c를 반환합니다.

가장 느린 키 Leetcode 솔루션에 대한 접근 방식

가장 느린 키 Leetcode 솔루션 문제는 이미 위에서 설명했습니다. 간단히 말해, 문제는 실행하는 데 가장 오래 걸리는 키를 찾도록 요청했습니다. 이 경우 두 개 이상의 키를 실행하는 데 같은 시간이 걸립니다. 그런 다음 사 전적으로 가장 큰 키를 반환해야합니다. 문제를 해결하기 위해, 우리는 단순히 누른 키를 가로 질러 각 키의 해제 시간을 평가합니다. 첫 번째 키의 경우 releaseTime [0]과 같고 releaseTime [i] – releaseTime [i-1]입니다. 그래서 우리는 두 개의 변수를 유지하는데 하나는 답을 저장하고 다른 하나는 해당 키를 실행하는 데 걸리는 시간을 저장합니다.

키를 탐색하여 각각의 릴리스 시간을 평가합니다. 시간이 더 오래 걸리거나 현재 답변보다 사 전적으로 더 크고 실행하는 데 같은 시간이 걸리는 키를 찾으면 답변을 업데이트합니다. 결국 응답은 호출 함수로 반환됩니다.

가장 느린 키 Leetcode 솔루션을위한 코드

C ++ 코드

#include <bits/stdc++.h>
using namespace std;

char slowestKey(vector<int>& releaseTimes, string keysPressed) {
    int time = releaseTimes[0];
    char ans = keysPressed[0];
    for(int i=1;i<keysPressed.length();i++){
        int cur_time = releaseTimes[i] - releaseTimes[i-1];
        if(cur_time >= time){
            if(cur_time > time)
                ans = keysPressed[i], time = cur_time;
            else
                ans = max(ans, keysPressed[i]);
        }
    }
    return ans;
}

int main(){
    vector<int> releaseTimes = {9, 29, 49, 50};
    string keysPressed = "cbcd";
    cout<<slowestKey(releaseTimes, keysPressed);
}
c

자바 코드

import java.util.*;
import java.lang.*;
import java.io.*;
 
class Main
{
  public static char slowestKey(int[] releaseTimes, String keysPressed) {
        int time = releaseTimes[0];
        char ans = keysPressed.charAt(0);
        for(int i=1;i<keysPressed.length();i++){
            int cur_time = releaseTimes[i] - releaseTimes[i-1];
            if(cur_time >= time){
                if(cur_time > time){
                    ans = keysPressed.charAt(i);
                    time = cur_time;
                }
                else
                    ans = ans > keysPressed.charAt(i) ? ans : keysPressed.charAt(i);
            }
        }
        return ans;
    }
 
  public static void main (String[] args) throws java.lang.Exception {
    int[] releaseTimes = {9, 29, 49, 50};
      String keysPressed = "cbcd";
      System.out.print(slowestKey(releaseTimes, keysPressed));
  }
}
c

복잡성 분석

시간 복잡성

의 위에), 주어진 모든 키를 순회했기 때문입니다.

공간 복잡성

O (1), 문제를 해결하기 위해 두 개의 추가 변수 만 사용했기 때문입니다.

코멘트를 남겨

Translate »
1