查找被移除的元素

阅读量: 401 编辑

公差为 1 的等差升序数列,将数列输入到程序的数组时移除了⼀个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。

【输入描述】

输入两行。第一行是数组大小 n ,第二是数组元素,用空格分开。

【输出描述】

输出若一行,输出被删除的元素。

【输入样例】

8
1 2 4 5 6 7 8 9

【输出样例】

缺失的数字是 3

【参考程序】

// 爱码岛编程
#include <bits/stdc++.h>
using namespace std;

int n = 8;
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};

int findMissing(int arr[], int n) {
    int left = 0;
    int right = n - 1;
    int start = arr[0];
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == start + mid) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return start + left;
}

int main() {

    int result = findMissing(arr, n);
    if (result == arr[n - 1] + 1) {
        cout << "序列是连续的" << endl;
    } else {
        cout << result << endl;
    }

    return 0;
}
爱码岛编程公众号
试卷资料
爱码岛编程小程序
在线刷题
苏ICP备13052010号
©2023 南京匠成信息科技有限公司