LeetCode刷题计划——单调数列

简介: LeetCode刷题计划——单调数列

【前言】:

大家好呀!从今天开始,我就要和大家一起刷力扣了

伙伴们,一起冲呀!!!

ed47319a87ab4d05b8debb93f7ea21a0.gif

题目:单调数列

原题链接:力扣

分析:

这道题只是要求单调,所以我们要考虑单调递增和单调递减两种情


思路:

📝我们可以通过数组遍历的方式,用中间变量来记录是否单调,如果先后两个数组元素满足单调,该变量就加一,如此遍历到数组结束。

📝如果该数组整个都是单调的,那么它所对应的中间变量的值必定也跟着增加到了一个定值:数组长度-1

🌰Java语言版本:

1.class Solution {
    public boolean isMonotonic(int[] nums) {
        // 初始化两个中间变量,两个中间变量分别对应单调递增和单调递减两种情况
        int flag1 = 0, flag2 = 0; 
        for (int i = 1; i < nums.length; ++i) {
            // 当前后两数相等时也满足单调
            if (nums[i] >= nums[i - 1]) { 
                ++flag1; // 代表递增情况的中间变量flag1加一
            }
            if (nums[i] <= nums[i - 1]) {
                ++flag2; // 代表递减情况的中间变量flag2加一
            }
        }
        // 循环执行了nums.length - 1次,且每次只执行一次满足条件的if语句
        // 例如如果每次执行的都是满足递增的if语句,那循环结束后中间变量值自然等于nums.length - 1,
        // 即该数组单调递增,如果是单调递减的情况也同理
        if (flag1 == nums.length - 1 || flag2 == nums.length - 1) {
            return true; // 满足单调返回true
        }
        return false;
    }
}

🌰C语言版本:

bool isMonotonic(int* nums, int numsSize){
int flag1 = 0;//初始化中间变量
    int flag2 = 0;
    int k = numsSize - 1;
    for(int i = 1; i <= k; ++i){  //只循环k次,也就是说要想使中间变量的值等于k;循环中的两个if语句每次只能执行同一个
        if(nums[i] >= nums[i-1]){ //比如如果每次执行的if都是单调递增的,那循环结束中间变量值自然等于k,也就是该数组是单增的,返回true
            ++flag1;                                                                 
        }
        if(nums[i] <= nums[i-1]){
            ++flag2;
        }
    }
    if(flag1 == k || flag2 == k){ 
        return true;             
    }
    return false;
}

好了,咱们今天的题目就到这里了,咱们下个题目见😁

bc9957424d01445aa7d375f37152fcd3.jpg


相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
113 2
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
16 1
|
2月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
1月前
Leetcode第38题(外观数列)
LeetCode第38题要求生成外观数列的第n项,该数列从数字1开始,每一项都是对前一项的描述,例如第1项是"1",第2项是"11",第3项是"21",以此类推。
27 0
|
3月前
|
存储
LeetCode------斐波那契数列(2)
这篇文章提供了解决LeetCode上"斐波那契数列"问题的两种方法:一种是使用备忘录模式通过递归计算并存储结果以避免重复计算,另一种是自底向上的迭代方法,同时要求结果对1e9+7取模。
LeetCode------斐波那契数列(2)
|
3月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
50 3
|
3月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
26 1
|
3月前
|
Python
【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
本文介绍了LeetCode 478题的解法,题目要求在给定圆的半径和圆心位置的情况下实现在圆内均匀随机生成点的功能,并提供了Python的实现代码。
30 1
|
3月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
32 0
【Leetcode刷题Python】73. 矩阵置零