C++ 中排序陣列中第 k 個缺失元素


在本教程中,我們將編寫一個程式,找出給定排序陣列中第 k 個缺失元素。

找到在給定無序陣列中從最小值到最大值之間缺失的第 k 個數字。讓我們看看解決問題的步驟。

  • 初始化排序陣列。
  • 使用 k 初始化兩個變數 difference 和 count。
  • 遍歷陣列。
    • 如果當前元素不等於下一個元素。
      • 找到這兩個數字之間的差值。
      • 如果差值大於或等於 k,則返回當前元素加上 count。
      • 否則從 count 中減去差值。
  • 返回 -1。

示例

讓我們看看程式碼。

 線上演示

#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int k, int n) {
   int difference, count = k;
   for(int i = 0 ; i < n - 1; i++) {
      if ((arr[i] + 1) != arr[i + 1]) {
         difference = arr[i + 1] - arr[i] - 1;
         if (difference >= count) {
            return arr[i] + count;
         }else {
            count -= difference;
         }
      }
   }
   return -1;
}
int main() {
   int arr[] = { 1, 2, 3, 5, 10 }, n = 5;
   int k = 3;
   cout << findMissingNumber(arr, k, n) << endl;
   return 0;
}

輸出

如果執行以上程式碼,則會得到以下結果。

7

結論

如果您在本教程中有任何疑問,請在評論區提出。

更新於: 2021年4月9日

234 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.