lc1033-移动石子直到连续

题目描述

  • 数轴上有三块石子,最左边的石子可以向右移,但
    1. 不能越过最右边的石子
    2. 不能放在有石子的地方
  • 最右侧的石子同理
  • 每次只能移动一块石子,在上面规则下不限制距离
  • 问从初始位置到三块石子相邻,最小次数与最大次数

示例

输入: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]

题解

  • 思路:模拟
    1. 一开始就满足三块相邻 [0, 0]
    2. 一开始有两块相邻 [1, 不相邻两块的距离]
    3. 一开始都不相邻,且存在两块之间间隔为 1 [1, 两个间隔之和]
    4. 不相邻,且间隔均大于 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 - 1
    if 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

posted @ 2025-09-22 23:53  余越  阅读(8)  评论(0)    收藏  举报