使用 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

更新於: 2020 年 4 月 28 日

239 次瀏覽

啟動您的 職業 生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.