LeetCode 1099 두 합계 미만 K 부분 배열 제품 미만 K

여기에 원래 제목 링크 : https://leetcode.com/problems/two-sum-less-than-k/

주제 :

배열을 지정해,  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 
설명 : 
우리는 이하 60 58 합계 (34) (24)를 사용할 수있다.

예 2 :

입력 : A = [10,20,30], K = 15 
출력 : -1 
설명 : 
이 경우는 한 쌍의 합계 15 이하 얻는 것이 불가능이다.

노트 :

  1. 1 <= A.length <= 100
  2. 1 <= A[i] <= 1000
  3. 1 <= K <= 2000

해결 방법 :

어레이를 정렬한다. 머리와 꼬리를 가리키는 두 개의 포인터를 사용합니다. 합계를 계산합니다.

합 <K, 업데이트 고해상도 및 리터 ++는 합계를 증가합니다.

그렇지 않으면, 합계를 감소 r-- 사용.

시간 복잡도 : O (nlogn). N = A.length.

공간 : O (1).

AC 자바 :

1 개  솔루션 {
 2      공개  INT twoSumLessThanK ( INT [] A, INT K) {
 3          INT의 입술 = -1 ;
도 4          의 경우 (A ==  || A.length == 0 ) {
 5              리턴 입술;
6          }
 7          
8          Arrays.sort에 (A);
9          의 INT (L) = 0 ;
10          INT R = A.length-1 ;
11 일          동안 (L < R) {
 12              INT의 합 = A [1] + A [R];
13              의 경우(합 < K) {
 14                  입술 = Math.max (입술, 합);
15                  -1- ++ ;
16              } 다른 {
 17                  r-- 사용 ;
18              }
 19          }
 20          
21          복귀 입술;
22      }
 23 }

비슷한 부분 배열의 제품보다 작음 K .

추천

출처www.cnblogs.com/Dylan-Java-NYC/p/11368115.html