1. 程式人生 > 其它 >1629. 按鍵持續時間最長的鍵 遍歷兩個陣列

1629. 按鍵持續時間最長的鍵 遍歷兩個陣列

檢視原題

題解

  1. 在陣列的最前面加上一個0,為了更好求出每個按鍵的時間releaseTimes[i+1] - releaseTimes[i]
  2. 用一個變數記錄當前的最大持續時間,一個變數記錄對應的按鍵
  3. 迴圈不斷判斷是否有比當前持續時間長的按鍵,如果有,則更新最長持續時間和對應的按鍵
  4. 如果和最大持續時間相等,則繼續比較按鍵的大小,如果最新的較大,則更新為對應的按鍵
  5. 迴圈結束返回儲存的按鍵

程式碼

/**
 * @param {number[]} releaseTimes
 * @param {string} keysPressed
 * @return {character}
 */
var slowestKey = function(releaseTimes, keysPressed) {
	releaseTimes.unshift(0)
	maxNum = 0;
	maxKey = null;
	for(let i = 0;i<keysPressed.length;i++){
		if(releaseTimes[i+1] - releaseTimes[i] > maxNum){
			maxNum = releaseTimes[i+1] - releaseTimes[i];
			maxKey = keysPressed.charAt(i);
		}else if(releaseTimes[i+1] - releaseTimes[i] === maxNum){
			if(maxKey.charCodeAt() < keysPressed.charCodeAt(i)){
				maxKey = keysPressed.charAt(i)
			}
		}
	}
	return maxKey;
};