当前位置: 首页 > news >正文

每日leetcode(昨天赶飞机没做,今天补)

896. 单调数列 - 力扣(LeetCode)

题目

如果数组是单调递增或单调递减的,那么它是 单调 

如果对于所有 i <= jnums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= jnums[i] >= nums[j],那么数组 nums 是单调递减的。

当给定的数组 nums 是单调数组时返回 true,否则返回 false

    示例 1:

    输入:nums = [1,2,2,3]
    输出:true

    示例 2:

    输入:nums = [6,5,4,4]
    输出:true

    示例 3:

    输入:nums = [1,3,2]
    输出:false

    提示:

    • 1 <= nums.length <= 105
    • -105 <= nums[i] <= 105

    思路

    1. 先找到有增减趋势的第一个相邻元素,然后记录其增减趋势,每次乘下一相邻元素的差值,只有相邻两对差值相反的时候相乘才会小于0,这个时候就返回false即可。
    2. 若遍历完没有被打断,即返回true。

    代码实现

    class Solution {
    public:bool isMonotonic(vector<int>& nums) {int n = nums.size(), i = 1;long long diff;if(n <= 2) return true;while(nums[i]-nums[i-1]==0) {++i;if(i == n) return true;}diff = nums[i]-nums[i-1];for(i = i+1; i < n; ++i) {if(diff * (nums[i] - nums[i-1]) < 0) return false;  }return true;}
    };

    复杂度分析

    • 时间复杂度:要分别访问每个元素两次——O(n)。
    • 空间复杂度:O(1)。

    题解与反思

    • 我的实现是非常丑陋的,没有考虑到数据溢出的问题,其实不应该相乘,因为结果可能会非常大,那么能接受的数据就不能非常大,这将会是非常有局限性的,所以最好的选择还是设计一个标记,再进行判断。
    • 另外,差值其实也可以不用计算,直接判断相邻两元素的大小关系即可,还能省一个变量。
    • class Solution {
      public:bool isMonotonic(vector<int>& nums) {int n = nums.size(), flag = 0, diff;if(n < 3) return true;for(int i = 1; i < n; ++i) {if(nums[i] == nums[i-1]) continue;if(nums[i] < nums[i-1]) {if(flag == 0) flag = -1;if(flag == 1) return false;}else {if(flag == 0) flag = 1;if(flag == -1) return false; }}return true;}
      };

    相关文章:

  1. Java序列化与反序列化详细介绍
  2. QT写槽函数的注意事项
  3. js实现音频的录制
  4. LangGraph-agent-天气助手
  5. 地下综合管廊 3D 可视化平台
  6. 微信小程序数据接收
  7. uniapp-商城-67-shop(3-品牌信息显示,弹窗显示完整品牌信息,弹窗拨打电话、地图定位)
  8. 安卓11 不带谷歌包默认桌面布局
  9. HarmonyOS赋能套件介绍
  10. 聊一聊手动测试与探索性测试的区别
  11. mysql统计数据库大小
  12. 从Embedding到多模态检索:AI知识库构建的进阶路线图
  13. 2021-10-28 C++判断完全平方数
  14. 学习STC51单片机14(芯片为STC89C52RC)
  15. 点云补全技术深度解析:从原理到实践
  16. JWT生成的token的构成部分
  17. 5.Java 面向对象编程入门:类与对象的创建和使用​
  18. 【C++】深入理解C++中的函数与运算符重载
  19. Android中获取控件尺寸进阶方案
  20. vocabulary in code
  21. 广州天河网站建设/百度站长工具链接提交
  22. 黄冈市住房和城乡建设厅网站/武汉seo搜索引擎
  23. 云南省建设厅网站首页/四川成都最新消息
  24. 网页设计开发招聘/怎么优化推广自己的网站
  25. 类似聚划算的网站怎么建设/seo研究中心道一老师
  26. wordpress插件分类/谷歌seo搜索引擎下载