アレイ所与の A
整数および整数の K
、最大戻り S
が存在するように i < j
と A[i] + A[j] = S
し、 S < K
。i, j
この方程式を満たすものが存在しない場合は 、-1を返します。
例1:
入力: A = [34,23,1,24,75,33,54,8]、K = 60 出力: 58 説明: 34と24を使用して、60未満の58を合計できます。
例2:
入力: A = [10,20,30]、K = 15 出力: -1 説明: この場合、15未満のペアの合計を取得することはできません。
アイデア:A [i]!= A [j]、small i、big j; O(限り、この質問は、実際には、i <j、sort、同じ方向のダブルポインター検索を気にする必要はありません。 NlogN)
class Solution {
public int twoSumLessThanK(int[] A, int K) {
Arrays.sort(A);
int i = 0; int j = A.length - 1;
int maxsum = -1;
while(i < j) {
int sum = A[i] + A[j];
if(sum < K) {
maxsum = Math.max(maxsum, sum);
i++;
} else {
//sum >= K;
j--;
}
}
return maxsum;
}
}