小於K的兩數之和

2022-05-30 20:24:11 字數 1438 閱讀 6951

給你乙個整數陣列a和乙個整數k,請在該陣列中找出兩個元素,使它們的和小於k但盡可能地接近k返回這兩個元素的和

如不存在這樣的兩個元素,請返回-1

示例1:

輸入:a = [34,23,1,24,75,33,54,8], k = 60

輸出:58

解釋:34 和 24 相加得到 58,58 小於 60,滿足題意。

示例2:

輸入:a = [10,20,30], k = 15

輸出:-1

解釋:無法找到和小於 15 的兩個元素

思路:首先對陣列進行排序。然後左指標指向第乙個元素,右指標指向第二個元素。將左指標和右指標對應的值相加,如果》=k,則右指標移動一位。如果小於k,則左指標移動一位。

例子:陣列:k=60

1,8,33,54,23,34,24,75

排序後:

1 8 23 24 33 34

54 75

l                              r

1+75>k,r移動一位

1 8 23 24 33 34

54 75

l                         r 

1+54 < k,l移動一位,此時記錄sum=55

1 8 23 24 33 34

54 75

l                      r

8+54 > k, r移動一位

1 8 23 24 33 34

54 75

l                 r

8+34 < k,l移動一位

1 8 23 24 33 34

54 75

l              r

23+34 < k,l移動一位。此時的值為57>sum,因此sum更新為57

1 8 23 24 33 34

54 75

l        r

24+34 < k, l移動一位,此時值為58大於sum,sum更新為58

1 8 23 24 33 34

54 75

l   r

33+34 > k,r 移動一位,此時l=r,退出迴圈。最終得到的sum值為58

對應**如下:

void insert_sort(int arrary,int len)

}}

int twosumlessthank(int a, int len,int k)

else

}//如果sum值一直等於初始值,證明不存在這樣的兩個元素,則返回-1

return sum == a[left]?-1:sum;

}

小於 K 的兩數之和

給你乙個整數陣列a和乙個整數k,請在該陣列中找出兩個元素,使它們的和小於k但盡可能地接近k,返回這兩個元素的和。如不存在這樣的兩個元素,請返回 1。示例 1 輸入 a 34,23,1,24,75,33,54,8 k 60 輸出 58 解釋 34 和 24 相加得到 58,58 小於 60,滿足題意。...

1099 小於 K 的兩數之和

題目描述 給你乙個整數陣列 a 和乙個整數 k,請在該陣列中找出兩個元素,使它們的和小於 k 但盡可能地接近 k,返回這兩個元素的和。如不存在這樣的兩個元素,請返回 1。示例 1 輸入 a 34,23,1,24,75,33,54,8 k 60 輸出 58 解釋 34 和 24 相加得到 58,58 ...

兩數之和,三數之和

兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...