K未満の2つの合計

アレイ所与の  A 整数および整数の  K、最大戻り  S が存在するように  i < j と  A[i] + A[j] = S し、  S < Ki, 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;
    }
}

 

元の記事を710件公開 13のような 訪問数190,000以上

おすすめ

転載: blog.csdn.net/u013325815/article/details/105555127