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 的子数组!!!