C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のソートされた配列に欠落している要素


一意の番号のソートされた配列Aがあるとすると、配列の左端の番号から始まるK番目の欠落している番号を見つける必要があります。したがって、配列が[4,7,9,10]のようで、k =1の場合、要素は5になります。

これを解決するには、次の手順に従います-

  • n:=配列のサイズ、low:=0およびhigh:=n – 1

    に設定
  • nums [n --1] – nums [0] + 1 – n

    • return nums [n-1] +(k –(nums [n-1] – nums [0] + 1 – n))

  • 低<高– 1

    • 中:=低+(高-低)/ 2

    • 現在:=中–低+ 1

    • 不在:=nums [mid] – nums [low] + 1 –存在

    • 存在しない場合>=kの場合はhigh:=mid、それ以外の場合は存在しない場合はkを減少させます。low:=mid

  • nums [low] + k

    を返します

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int missingElement(vector<int>& nums, int k) {
      int n = nums.size();
      int low = 0;
      int high = n - 1;
      if(nums[n - 1] - nums[0] + 1 - n < k) return nums[n - 1] + (k
      - ( nums[n - 1] - nums[0] + 1 - n)) ;
      while(low < high - 1){
         int mid = low + (high - low) / 2;
         int present = mid - low + 1;
         int absent = nums[mid] - nums[low] + 1 - present;
         if(absent >= k){
            high = mid;
         }else{
            k -= absent;
            low = mid;
         }
      }
      return nums[low] + k;
   }
};
main(){
   vector<int> v = {4,7,9,10};
   Solution ob;
   cout << (ob.missingElement(v, 1));
}

入力

[4,7,9,10]
1

出力

5

  1. ソートされた配列を実装するC++プログラム

    並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルの並べ替え、挿入の並べ替え、選択の並べ替え、マージの並べ替え、クイック並べ替えなど、数値の配列を並べ替えるアルゴリズムは多数あります。ヒープソートなど。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を実装するプログラムは次のとおりです。 例 #include&

  2. Pythonで連続番号のソートされた配列から欠落している要素を見つける

    n個の一意の番号の配列Aがあり、これらのn個の要素は昇順で配列に存在しますが、欠落している要素が1つあるとします。不足している要素を見つける必要があります。 したがって、入力がA =[1、2、3、4、5、6、7、9]の場合、出力は8になります。 これを解決するには、次の手順に従います- n:=Aのサイズ 左:=0 右:=n-1 mid:=0 左、実行 中央:=左+(右-左)/ 2 A[mid]-midがA[0]と同じ場合、 1の場合、 A [mid] + 1を返します それ以外の場合 左:=半ば+ 1