京东 · 滑动窗口 · 算法编程题
京东 滑动窗口 时限 1 秒 / 256 MB

题目描述

给出两个整数 X,Y ,你可以任意顺序多次执行以下两个操作。 求出使得 X = Y 时所需的最少操作次数。 如果无法实现,则输出 -1 。
令经过一次操作后 X 和 Y 的值分别为 X' 和 Y' 。
操作一: X' = Y,Y' = X 。
操作二: X' = X + Y,Y' = X - Y

输入输出

输入描述
输入的第一行给出两个整数 X,Y 。
-100 ≤ X,Y ≤ 100
输出描述
输出使得 X = Y 时所需的最少操作次数。 如果无法实现,则输出 -1

样例共 2 组

样例 1
输入
5 8
输出
-1
样例 2
输入
5 -5
输出
3

算法解析依据充分

考点:队列 · 广度优先搜索(BFS)

限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 元素值域:X ≤ 100,Y ≤ 100(注意整数类型选择,避免溢出)
  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:滑动窗口

维护一个连续区间,进一个元素出一个元素,区间内统计量增量更新。

思路框架(滑动窗口 通法 · 非本题专属)

  1. 用左右指针确定一个窗口 [l, r]。
  2. 右端点右移:把新元素加入窗口统计。
  3. 当窗口违反约束(长度超限 / 含重复等)时,左端点右移,把元素移出统计。
  4. 在每个合法窗口上更新答案。
  5. 统计量用哈希表或计数数组维护,避免每次重算。

实现要点:注意窗口长度是定长还是不定长:定长则区间长度固定为 k,不定长则靠条件收缩。

复杂度:时间 O(n) | 空间 O(字符集/去重元素数)

该范式的通法易错点

  • 移出窗口时忘同步更新统计量。
  • 窗口长度与下标边界差 1(长度 k 对应 r-l+1)。

对照本题

  • 元素值域最大到 100 —— 求和 / 相乘时记得开 64 位整数。

样例

样例 1

  • 输入:5 8
  • 输出:-1

样例 2

  • 输入:5 -5
  • 输出:3

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2024年春招-京东-技术通用岗位-第三批笔试。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解