所定の規則配列は、それらの和が目標数の和に等しくなるように2つの数値を見つけるために応じて昇順にソートされています。 機能はindex1のINDEX2未満でなければならない2つの指標値からindex1 INDEX2を返す必要があります。 説明: インデックス値(インデックス1、INDEX2をして)返し、ゼロではありません。 あなたは、各入力のみ唯一の答えに対応すると仮定することができますが、同じ要素を再利用することはできません。 例: 入力:番号 = 2、7、11、15 ]、目標= 9 出力:[ 1、2 ] 説明:2及び7が同じ目標数である9。したがって、インデックス1 = 1、INDEX2 = 2。
1 INT * twoSum(INT *数字、INT numbersSize、INTターゲット、INT * returnSize){ 2 INT I = 0、J = numbersSize- 1 、K。 3 INT * RES = malloc関数(はsizeof(INT)* 2 )。 4 * returnSize = 2 。 5 一方(iは= < j)を 6 { 7 、K =番号[I] + 数字[J]。 8 もし(K == ターゲット) 9 { 10の RES [ 0 ] = I + 1 。 11の RES [ 1 ] = J + 1 。 12 ブレーク; 13 } 14 他の 場合(K> ターゲット) 15 J - 。 16 他 17 私は++します; 18 } 19の 20 戻りRES。 21 }
問題解決のアイデア:
アレイの境界の両端に配置された二重ポインタ
そして、2つの目標値は、中間の数字を近似しました。