用 C++ 找出等差數列中的缺失數
假設我們有一個數組,按順序表示等差數列的元素。缺少一個元素。我們必須找到缺失的元素。所以,如果 arr = [2, 4, 8, 10, 12, 14],輸出為 6,因為缺少 6。
使用二分查詢,我們可以解決這個問題。我們將轉到中間元素,然後檢查中間和中間相鄰元素之間的差是否與 diff 相同。如果不是,則缺失的元素存在於索引 mid 和 mid + 1 之間。如果中間元素是等差數列中的第 n/2 個元素,那麼缺失元素位於右半部分,否則位於左半部分。
示例
#include <iostream>
using namespace std;
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);
}輸出
The missing element is: 6
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP