数组是 1..n 的排列,数值连续的数对只有 (1,2),(2,3),…,(n−1,n) 共 n−1 对。
因此只需记录每个值出现的下标 pos[v],再对每个 v=1..n−1 计算 ∣pos[v]−pos[v+1]∣,取最大值即可。
常见假解:枚举所有下标对只检查差为 1 但写成 O(n2) 无妨(n≤100),真正易错是误把「相邻下标」当成「相邻数值」,或只看相邻下标的值差。
numbers 是 1..n 的一个排列(n=numbers.length)。求所有满足 ∣numbers[i]−numbers[j]∣=1 的下标对中,∣i−j∣ 的最大值。
整数数组 numbers,满足 2≤numbers.length≤100。
一个整数:所求最大下标距离。
输入:
[1, 4, 2, 5, 3]
输出:
3
说明:
数值相邻对中,例如 2 与 3 的下标为 2 与 4,距离 2;4 与 5 距离 1;1 与 2 距离 2;3 与 4 距离 3。最大为 3。
输入:
[3, 1, 4, 2]
输出:
3
说明:
1 与 2 下标为 1 与 3,距离 3,为最大。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册