Задав массив целых чисел arr, верните true тогда и только тогда, когда он является допустимым горным массивом. Напомним, что arr является горным массивом тогда и только тогда, когда: arr.length >= 3 Существует некоторое i с 0 < i < arr.length - 1 такое, что: arr[0] < arr[1] < ... < arr[i - 1] < arr[i] arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
Пример:
Input: arr = [2,1]
Output: false
C# решение
сопоставлено/оригиналpublic class Solution {
public bool ValidMountainArray(int[] arr) {
if (arr.Length < 3) return false;
int i = 1;
while (i < arr.Length && arr[i] > arr[i - 1]) i++;
if (i == 1 || i == arr.Length) return false;
while (i < arr.Length && arr[i] < arr[i - 1]) i++;
return i == arr.Length;
}
}
C++ решение
auto-draft, проверить перед отправкой#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 ValidMountainArray(vector<int>& arr) {
if (arr.size() < 3) return false;
int i = 1;
while (i < arr.size() && arr[i] > arr[i - 1]) i++;
if (i == 1 || i == arr.size()) return false;
while (i < arr.size() && arr[i] < arr[i - 1]) i++;
return i == arr.size();
}
}
Java решение
сопоставлено/оригиналclass Solution {
public boolean validMountainArray(int[] arr) {
if (arr.length < 3) return false;
int i = 1;
while (i < arr.length && arr[i] > arr[i - 1]) i++;
if (i == 1 || i == arr.length) return false;
while (i < arr.length && arr[i] < arr[i - 1]) i++;
return i == arr.length;
}
}
JavaScript решение
сопоставлено/оригиналvar validMountainArray = function(arr) {
if (arr.length < 3) return false;
let i = 1;
while (i < arr.length && arr[i] > arr[i - 1]) i++;
if (i === 1 || i === arr.length) return false;
while (i < arr.length && arr[i] < arr[i - 1]) i++;
return i === arr.length;
};
Python решение
сопоставлено/оригиналdef validMountainArray(arr):
if len(arr) < 3:
return False
i = 1
while i < len(arr) and arr[i] > arr[i - 1]:
i += 1
if i == 1 or i == len(arr):
return False
while i < len(arr) and arr[i] < arr[i - 1]:
i += 1
return i == len(arr)
Go решение
сопоставлено/оригиналpackage main
func validMountainArray(arr []int) bool {
if len(arr) < 3 {
return false
}
i := 1
for i < len(arr) && arr[i] > arr[i-1] {
i++
}
if i == 1 || i == len(arr) {
return false
}
for i < len(arr) && arr[i] < arr[i-1] {
i++
}
return i == len(arr)
}
Algorithm
Убедиться, что длина массива не меньше 3.
Найти вершину горы, которая удовлетворяет условиям горного массива.
Проверить, что все элементы слева от вершины строго возрастают.
Проверить, что все элементы справа от вершины строго убывают.
Вернуть true, если оба условия выполнены, иначе вернуть false.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.
Активных вакансий пока нет.