题目描述
- 数轴上有三块石子,最左边的石子可以向右移,但
- 不能越过最右边的石子
- 不能放在有石子的地方
- 最右侧的石子同理
- 每次只能移动一块石子,在上面规则下不限制距离
- 问从初始位置到三块石子相邻,最小次数与最大次数
示例
输入:a = 1, b = 2, c = 5
输出:[1, 2]
解释:c 从 5 到 3,此为 1 次;c 从 5 到 4,再从 4 到 3,此为 2 次
输入:a = 4, b = 3, c = 2
输出:[0, 0]
题解
- 思路:模拟
- 一开始就满足三块相邻
[0, 0]
- 一开始有两块相邻
[1, 不相邻两块的距离]
- 一开始都不相邻,且存在两块之间间隔为 1
[1, 两个间隔之和]
- 不相邻,且间隔均大于 1
[2, 两个间隔之和]
- 一开始就满足三块相邻
func numMovesStones(a int, b int, c int) []int {arr := []int{a, b, c}sort.Ints(arr)a, b, c = arr[0], arr[1], arr[2]if a + 1 == b && b + 1 == c { return []int{0, 0} }sub1, sub2 := b - a - 1, c - b - 1if a + 1 == b || b + 1 == c { return []int{1, max(sub1, sub2)} }if a + 2 == b || b + 2 == c { return []int{1, sub1 + sub2} }return []int{2, sub1 + sub2}
}
claude 锁国区后,国产大模型之间的“对决”似曾相识,共享单车、外卖大战犹在眼前
两天没登,今晚发现新上了个 Leet ai
演示视频的效果是夯,试用下来感觉有点 npc