/ * トピック: 単調増加アレイ、及び任意の数に等しい添字値を求めます。 * / / * アイデア: 二分法。 * / 書式#include <iostreamの> 書式#include <CStringの> 書式#include <ベクトル> 書式#include <アルゴリズム> 書式#include <マップ> 名前空間stdを使用。 INT getNumberSameAsIndex(ベクトル<整数>&A、INT N){ IF(N <= 0 || A.empty())リターン-1。 = 0を開始INT。 INT端= N - 1。 一方、(開始<=端){ INT中央=(+端を開始)/ 2。 IF(A [中間] <中間){ 開始= 1 +真ん中。 }そうであれば(A [中間]>中央){ 端部=中央 - 1。 }そうしないと{ 真ん中返します。 } } -1を返します。 } INTメイン(){ ベクター<整数> A = {-3、-1,1,3,5}。 COUT << getNumberSameAsIndex(5)。 }