План курса / Все задачи / Алгоритмы и структуры данных
Монотонный массив
легко
# решено
Дан целочисленный массив nums. Нужно вернуть true, если массив монотонный, и false в обратном случае.
Массив считается монотонным, если он отсортирован (по возрастанию или убыванию).
Пример 1:
Ввод: nums = [1,2,2,2,3]
Вывод: true
Пример 2:
Ввод: nums = [5,4,-10]
Вывод: true
Пример 3:
Ввод: nums = [5,4,1,2]
Вывод: false
Ограничения:
len(nums) >= 1
public class Solution
{
public static bool IsMonotonic(List<int> nums)
{
// Идея в том, что нам не важно, монотонно ли возрастает массив
// или монотонно убывает, поэтому мы заводим 2 флага:
// на монотонное возрастание и на монотонное убывание
bool isInc = true;
bool isDec = true;
for (int i = 1; i < nums.Count; i++)
{
isInc = isInc && nums[i - 1] <= nums[i];
isDec = isDec && nums[i - 1] >= nums[i];
}
return isInc || isDec;
}
}
public class Solution
{
public static bool IsMonotonic(List<int> nums)
{
// Идея в том, что нам не важно, монотонно ли возрастает массив
// или монотонно убывает, поэтому мы заводим 2 флага:
// на монотонное возрастание и на монотонное убывание
bool isInc = true;
bool isDec = true;
for (int i = 1; i < nums.Count; i++)
{
isInc = isInc && nums[i - 1] <= nums[i];
isDec = isDec && nums[i - 1] >= nums[i];
}
return isInc || isDec;
}
}
#include <vector>
using namespace std;
bool isMonotonic(vector<int>& nums) {
// идея в том, что нам не важно монотонно возрастает массив
// или монотонно убывает, поэтому мы заводим 2 флага:
// на монотонное возрастание и на монотонное убывание
bool isInc = true;
bool isDec = true;
for (int i = 1; i < nums.size(); i++) {
isInc = isInc && nums[i - 1] <= nums[i];
isDec = isDec && nums[i - 1] >= nums[i];
}
return isInc || isDec;
}
import java.util.List;
public class Solution {
public boolean isMonotonic(List<Integer> nums) {
// идея в том, что нам не важно монотонно возрастает массив
// или монотонно убывает, поэтому мы заводим 2 флага:
// на монотонное возрастание и на монотонное убывание
boolean isInc = true;
boolean isDec = true;
for (int i = 1; i < nums.size(); i++) {
isInc = isInc && nums.get(i - 1) <= nums.get(i);
isDec = isDec && nums.get(i - 1) >= nums.get(i);
}
return isInc || isDec;
}
}
from typing import *
def is_monotonic(nums: List[int]) -> bool:
# идея в том, что нам не важно монотонно возрастает массив
# или монотонно убыват, поэтому мы заводим 2 флага:
# на монотонное возрастание и на монотонное убывание
is_inc = True
is_dec = True
for i in range(1, len(nums)):
is_inc = is_inc and nums[i - 1] <= nums[i]
is_dec = is_dec and nums[i - 1] >= nums[i]
return is_inc or is_dec
export function isMonotonic(nums) {
// идея в том, что нам не важно монотонно возрастает массив
// или монотонно убывает, поэтому мы заводим 2 флага:
// на монотонное возрастание и на монотонное убывание
let isInc = true;
let isDec = true;
for (let i = 1; i < nums.length; i++) {
isInc = isInc && nums[i - 1] <= nums[i];
isDec = isDec && nums[i - 1] >= nums[i];
}
return isInc || isDec;
}