移除自然數中某些整數後的第 k 小元素(用 C++ 實現)


在本教程中,我們將編寫一個程式,以找出在從自然數中移除某些整數後得到的最小元素。

我們給出了一個元素陣列和 k 值。從自然數中移除給定陣列中存在的所有元素。然後從剩下的自然數中找出第 k 小的元素。

我們來看看解決此問題的步驟。

  • 初始化陣列和 k。
  • 初始化一個數組,並用 0 初始化所有元素,但給定陣列中存在的元素除外。
  • 編寫一個迴圈,迭代到給定陣列的大小。
    • 如果當前元素不存在於上述陣列中,則減小 k 的值。
    • 當 k 變為零時返回當前值。
  • 返回 0。

示例

我們來看看程式碼。

 即時演示

#include <bits/stdc++.h>
#define MAX 1000000
using namespace std;
int smallestNumber(int arr[], int n, int k) {
   int flag[MAX];
   memset(flag, 0, sizeof flag);
   for (int i = 0; i < n; i++) {
      flag[arr[i]] = 1;
   }
   for (int i = 1; i < MAX; i++) {
      if (flag[i] != 1) {
         k--;
      }
      if (!k) {
         return i;
      }
   }
   return 0;
}
int main() {
   int k = 2;
   int arr[] = { 3, 5 };
   cout << smallestNumber(arr, 2, k) << endl;
   return 0;
}

輸出

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

2

結論

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

更新於:09-04-2021

198 次瀏覽

開始您的 職業生涯

學習本課程並獲得認證

開始
廣告
© . All rights reserved.