🗒️2654. 使数组所有元素变成 1 的最少操作次数
2024-12-6
| 2024-12-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Dec 6, 2024 02:34 PM
给你一个下标从 0 开始的  整数数组 nums 。你可以对数组执行以下操作 任意 次:
  • 选择一个满足 0 <= i < n - 1 的下标 i ,将 nums[i] 或者 nums[i+1] 两者之一替换成它们的最大公约数。
请你返回使数组 nums 中所有元素都等于 1 的 最少 操作次数。如果无法让数组全部变成 1 ,请你返回 -1 。
两个正整数的最大公约数指的是能整除这两个数的最大正整数。

我们有两种情况:
  • 数组中有 1:直接用数组中的 1
  • 数组中没有 1:我们需要创造 1
想到了前半部分。
如何统计创造 1 的次数,没有头绪。
参考 灵茶山艾府由于只能操作相邻的数,所以这个 1 必然是一个连续子数组的 GCD。因此,我们可以找到最短且 GCD 为 1 的子数组!!!
 

📎 参考

  • 【题单】数学算法
  • 2413. 最小偶倍数858. 镜面反射
    Loading...
    目录