가장 느린 키 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), 문제를 해결하기 위해 두 개의 추가 변수 만 사용했기 때문입니다.