标签:通过 return ret java 输出 turn 窗口 fir 中间
有一个数组, 其中的值符合等差数列的数值规律, 也就是说:
0 <= i < arr.length - 1
?的前提下, arr[i+1] - arr[i]
?的值都相等.我们会从该数组中删除一个 既不是第一个 也 不是最后一个的值, 得到一个新的数组??arr
.
给你这个缺值的数组?arr
, 请你帮忙找出被删除的那个数.
示例 1:
输入: arr = [5,7,11,13]
输出: 9
解释: 原来的数组是 [5,7,9,11,13].
示例 2:
输入: arr = [15,13,12]
输出: 14
解释: 原来的数组是 [15,14,13,12].
提示:
3 <= arr.length <= 1000
0 <= arr[i] <= 10^5
读题
输入数组, 是个等差序列, 不过中间(除了首尾)缺了一个元素
class Solution {
public int missingNumber(int[] arr) {
int len = arr.length;
// first, last 首尾两元素
int first = arr[0], last = arr[len-1];
// 该等差序列的整体等差
int sub = (last-first) / len;
for (int i = 0; i < len-1; i++) {
// 一个为2的窗口 [i, i+1]
int cur = arr[i], next = arr[i+1];
// System.out.printf("cur:%d next:%d n1:%d\n", cur, next, cur+sub);
// 如何前后元素差值不为等差, 那么前一个元素+等差 就是缺失的元素
if (cur+sub != next) {
return cur+sub;
}
}
return 0;
}
}
[leetcode 双周赛 11] 1228 等差数列中缺失的数字
标签:通过 return ret java 输出 turn 窗口 fir 中间
原文地址:https://www.cnblogs.com/slowbirdoflsh/p/11736159.html