使用 C++ 查找算术级数中的缺失数
假设我们有一个代表算术级数元素的数组。一个元素缺失了。我们需要找出缺失的元素。因此,如果 arr = [2, 4, 8, 10, 12, 14],输出为 6,因为 6 缺失了。
我们可以使用二分搜索来解决这个问题。我们将转到中间元素,然后检查中间元素与中间元素旁边元素的差是否等于 diff。如果不相等,则缺失的元素存在于索引 mid 和 mid + 1 之间。如果中间元素是 AP 中的第 n/2 个元素,则缺失的元素位于右半部分,否则位于左半部分。
示例 (C++)
#include <iostream>
using namespace std;
#define INT_MAX 999999
class Progression {
public:
int missingUtil(int arr[], int left, int right, int diff) {
if (right <= left)
return INT_MAX;
int mid = left + (right - left) / 2;
if (arr[mid + 1] - arr[mid] != diff)
return (arr[mid] + diff);
if (mid > 0 && arr[mid] - arr[mid - 1] != diff)
return (arr[mid - 1] + diff);
if (arr[mid] == arr[0] + mid * diff)
return missingUtil(arr, mid + 1, right, diff);
return missingUtil(arr, left, mid - 1, diff);
}
int missingElement(int arr[], int n) {
int diff = (arr[n - 1] - arr[0]) / n;
return missingUtil(arr, 0, n - 1, diff);
}
};
int main() {
Progression pg;
int arr[] = {2, 4, 8, 10, 12, 14};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "The missing element is: " << pg.missingElement(arr, n)<<endl;
}输入
[2,4,8,10,12,14]
输出
The missing element is: 6
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP