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

Problem: 6953. 判断是否能拆分数组

Problem: 6953. 判断是否能拆分数组

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

针对题目中的以下目标,可以转换寻求数组中是否存在前后两个元素之和>=m的情况,如果存在则返回ture,如果不存在则返回false。能这样转换的原因是,如果存在则这两个元素可以当做最后一次进行以下操作的字数组,因为从他向前或向后,起组成的数组肯定都>=m。

在每一步操作中,你可以选择一个 长度至少为 2 的现有数组(之前步骤的结果) 并将其拆分成 2 个子数组,而得到的 每个 子数组,至少 需要满足以下条件之一:

  • 子数组的长度为 1 ,或者
  • 子数组元素之和 大于或等于 m

解题方法

  1. 首先判断nums数组是否<=2,如果满足则直接返回true;
  2. 然后循环判断数组前后两个元素之和是否>=m,如果满足则直接return true,知道循环完毕还没找到则retuen false;

复杂度

  • 时间复杂度: O(n),需要循环长度为n的数组;
  • 空间复杂度: O(1),只需要常数级别的变量;

Code

    public boolean canSplitArray(List<Integer> nums, int m) {int len = nums.size();if (len <= 2) {return true;}for (int i = 0; i < len - 1; i++) {int sum = nums.get(i) + nums.get(i + 1);if (sum >= m) {return true;}}return false;}
http://www.lryc.cn/news/113630.html

相关文章:

  • MobiSys 2023 | 多用户心跳监测的双重成形声学感知
  • Netty:ChannelInitializer添加到ChannelPipeline完成任务以后会自动删除自己
  • 【VUE】项目本地开启https访问模式(vite4)
  • 【状态估计】一维粒子滤波研究(Matlab代码实现)
  • 设计模式-迭代器模式在Java中使用示例
  • Maven入职学习
  • 【多音音频测试信号】具有指定采样率和样本数的多音信号,生成多音信号的相位降低波峰因数研究(Matlab代码实现)
  • LeetCode150道面试经典题-删除有序数组中的重复项(简单)
  • 人大金仓数据库Docker部署
  • Leetcode-每日一题【剑指 Offer 07. 重建二叉树】
  • Shell编程快速入门
  • wpf 3d 坐标系和基本三角形复习
  • 如何安全变更亚马逊收款账户?
  • 大数据面试题:Hadoop中的几个进程和作用
  • 题解:ABC276D - Divide by 2 or 3
  • 后台管理系统
  • C++数据结构之平衡二叉搜索树(一)——AVL的实现(zig与zag/左右双旋/3+4重构)
  • 静态库和动态库
  • 用于Voronoi图构建的Fortune算法的C++实现
  • 笔记汇总 | 斯坦福 CS229 机器学习
  • git 版本管理工具 学习笔记
  • Bean基本注解开发和Bean依赖注入注解开发
  • 使用IIS服务器搭建一个网站
  • HCIP 三层交换机
  • 利用python 进行数据分析(第三版)第二章小结
  • 【ASP.NET MVC】使用动软(四)(12)
  • 【web逆向】全报文加密及其登录流程的分析案例
  • MyBatis枚举映射类讨论
  • 微信开发之朋友圈自动点赞的技术实现
  • Linux命令200例:sed对文本进行修改、替换和删除等操作的强大工具(常用)