334. Increasing Triplet Subsequence
Дан Array целых чисел nums. return true, если существуют такие три индекса (i, j, k), что i < j < k и nums[i] < nums[j] < nums[k]. Если таких индексов не существует, return false.
Beispiel:
Input: nums = [2,1,5,0,4,6]
Output: true
Explanation: The triplet (3, 4, 5) is valid because nums[3] == 0 < nums[4] == 4 < nums[5] == 6.
C# Lösung
zugeordnet/originalpublic class Solution {
public bool IncreasingTriplet(int[] nums) {
int firstNum = int.MaxValue;
int secondNum = int.MaxValue;
foreach (int n in nums) {
if (n <= firstNum) {
firstNum = n;
} else if (n <= secondNum) {
secondNum = n;
} else {
return true;
}
}
return false;
}
}
C++ Lösung
Auto-Entwurf, vor dem Einreichen prüfen#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public bool IncreasingTriplet(vector<int>& nums) {
int firstNum = int.MaxValue;
int secondNum = int.MaxValue;
foreach (int n in nums) {
if (n <= firstNum) {
firstNum = n;
} else if (n <= secondNum) {
secondNum = n;
} else {
return true;
}
}
return false;
}
}
Java Lösung
zugeordnet/originalclass Solution {
public boolean increasingTriplet(int[] nums) {
int first_num = Integer.MAX_VALUE;
int second_num = Integer.MAX_VALUE;
for (int n: nums) {
if (n <= first_num) {
first_num = n;
} else if (n <= second_num) {
second_num = n;
} else {
return true;
}
}
return false;
}
}
JavaScript Lösung
zugeordnet/originalvar increasingTriplet = function(nums) {
let firstNum = Infinity;
let secondNum = Infinity;
for (let n of nums) {
if (n <= firstNum) {
firstNum = n;
} else if (n <= secondNum) {
secondNum = n;
} else {
return true;
}
}
return false;
};
Python Lösung
zugeordnet/originalclass Solution:
def increasingTriplet(self, nums: List[int]) -> bool:
first_num = float('inf')
second_num = float('inf')
for n in nums:
if n <= first_num:
first_num = n
elif n <= second_num:
second_num = n
else:
return True
return False
Go Lösung
zugeordnet/originalfunc increasingTriplet(nums []int) bool {
firstNum := int(^uint(0) >> 1) // Maximum integer
secondNum := int(^uint(0) >> 1) // Maximum integer
for _, n := range nums {
if n <= firstNum {
firstNum = n
} else if n <= secondNum {
secondNum = n
} else {
return true
}
}
return false
}
Algorithm
Инициализация переменных:
Создайте две переменные first_num и second_num и установите их значение на максимальное целое значение (Integer.MAX_VALUE или аналогичный максимум для выбранного языка программирования). Эти переменные будут хранить минимальные значения, необходимые для проверки существования возрастающей тройки.
Итерация по Arrayу:
Пройдите по каждому elementу Arrayа nums. Для каждого elementа выполните следующие проверки:
- если текущий element меньше или равен first_num, обновите first_num текущим elementом.
- иначе, если текущий element меньше или равен second_num, обновите second_num текущим elementом.
- иначе, если текущий element больше second_num, это означает, что найдена возрастающая тройка, поэтому return true.
Возврат результата:
Если после завершения итерации по Arrayу не была найдена возрастающая тройка, return false.
😎
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.