zoukankan      html  css  js  c++  java
  • LeetCode 1099. Two Sum Less Than K

    原题链接在这里:https://leetcode.com/problems/two-sum-less-than-k/

    题目:

    Given an array A of integers and integer K, return the maximum S such that there exists i < j with A[i] + A[j] = S and S < K. If no i, jexist satisfying this equation, return -1.

    Example 1:

    Input: A = [34,23,1,24,75,33,54,8], K = 60
    Output: 58
    Explanation: 
    We can use 34 and 24 to sum 58 which is less than 60.
    

    Example 2:

    Input: A = [10,20,30], K = 15
    Output: -1
    Explanation: 
    In this case it's not possible to get a pair sum less that 15.

    Note:

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

    题解:

    Sort the array. Use two pointers pointing at head and tail. Calculate the sum.

    If sum < K, update res and l++ to increase sum.

    Otherwise, r-- to decrease sum.

    Time Complexity: O(nlogn). n = A.length.

    Space: O(1).

    AC Java:

     1 class Solution {
     2     public int twoSumLessThanK(int[] A, int K) {
     3         int res = -1;
     4         if(A == null || A.length == 0){
     5             return res;
     6         }
     7         
     8         Arrays.sort(A);
     9         int l = 0;
    10         int r  = A.length-1;
    11         while(l<r){
    12             int sum = A[l] + A[r];
    13             if(sum < K){
    14                 res = Math.max(res, sum);
    15                 l++;
    16             }else{
    17                 r--;
    18             }
    19         }
    20         
    21         return res;
    22     }
    23 }

    类似Subarray Product Less Than K.

  • 相关阅读:
    acm 总结之大数加法
    hdu 1004
    hdu 1887
    hdu 2007
    hdu 2004
    ACM总结之 A+B problem 总结
    nyoj_42_一笔画问题_201403181935
    最短路径--Floyd算法
    最短路径—Dijkstra算法
    nyoj_114_某种序列_201403161700
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/11368115.html
Copyright © 2011-2022 走看看