经典算法题详解之切分数组(一)

我们先来看题目描述:

给定一个整数数组 nums,小李想将 nums 切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于 1 。为了减少他的工作量,请求出最少可以切成多少个子数组。​

示例 1

输入:nums = [2,3,3,2,3,3]

输出:2

解释:最优切割为 [2,3,3,2] 和 [3,3] 。第一个子数组头尾数字的最大公约数为 2 ,第二个子数组头尾数字的最大公约数为 3 。

示例 2

输入:nums = [2,3,5,7]

输出:4

解释:只有一种可行的切割:[2], [3], [5], [7]

限制

  • 1 <= nums.length <= 10^5
  • 2 <= nums[i] <= 10^6
相关推荐
超级大福宝15 小时前
【力扣200. 岛屿数量】的一种错误解法(BFS)
数据结构·c++·算法·leetcode·广度优先
独自破碎E15 小时前
【动态规划=递归+记忆化存储】跳台阶
算法·动态规划
一颗青果15 小时前
auto | 尾置返回类型 | decltype | using | typedef
java·开发语言·算法
郝学胜-神的一滴15 小时前
何友院士《人工智能发展前沿》全景解读:从理论基石到产业变革
人工智能·python·深度学习·算法·机器学习
BHXDML16 小时前
第五章:支持向量机
算法·机器学习·支持向量机
2401_8414956416 小时前
具身智能:从理论到现实,人工智能的下一场革命
人工智能·算法·机器人·硬件·具身智能·通用智能·专用智能
Felven16 小时前
B. MEXor Mixup
算法
阿崽meitoufa16 小时前
JVM虚拟机:垃圾收集算法
java·jvm·算法
练习时长一年16 小时前
LeetCode热题100(分割等和子集)
算法·leetcode·职场和发展
52Hz11816 小时前
力扣148.排序链表
leetcode