K-Pair (follow-up)
Coddyの「コーディング面接チャレンジ - パック IV」コースのレッスン 2/3。
以前と同じ問題ですが、今度は時間計算量の制約があります。O(n) で解く必要があります。
チャレンジ
中級整数の配列 arr とターゲットとなる数値 k を受け取り、arr の中に合計が k になる整数のペアが存在する場合は true を、そうでない場合は false を返す関数 findPair を作成してください。
例:
入力 - arr = [1, 2, 3, 4], k = 6
期待される出力 - true
解説 - arr 内に存在するペア (2, 4) の合計が k になります(これが唯一のペアでもあります)。
注意: arr はソートされた配列ではありません。
自分で試してみよう
#include <stdbool.h>
bool findPair(int* arr, int arrSize, int k) {
// ここにコードを記述してください
}