> 文档中心 > LeetCode刷题计划——单调数列

LeetCode刷题计划——单调数列

【前言】:

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

伙伴们,一起冲呀!!!

 

 题目:单调数列

原题链接:力扣

 

 分析: 

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

思路: 

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

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

 

 🌰Java语言版本:

class Solution {    public boolean isMonotonic(int[] nums) { // 初始化两个中间变量,两个中间变量分别对应单调递增和单调递减两种情况 int flag1 = 0, flag2 = 0;   for (int i = 1; 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 = nums[i-1]){ //比如如果每次执行的if都是单调递增的,那循环结束中间变量值自然等于k,也就是该数组是单增的,返回true     ++flag1;   } if(nums[i] <= nums[i-1]){     ++flag2; }    }    if(flag1 == k || flag2 == k){  return true;   }    return false;}

 

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

 

香烟价格网