问题 : ' Z1 E7 J6 N2 [4 x! O) v) [" `给定 ve 和 -ve 整数组,我们需要在数组中找到总和接近零的一对。* `" w* i/ ]( A) T7 b9 N) S
例如: # W! o6 h$ ] M! t/ @" `9 B0 I8 A4 narray[]={1,3,-5,7,8,20,-40,6};The pair whose sum is closest to zero : -5 and ; E: ?) h# S( G3 q0 @7 ~解决方案: 3 S8 X4 P8 ^) R X4 T. i- Y/ @/ h! A 您可以检查每对数字并找到最小和。 - N& B; q5 [7 n( ]% y( Ejava代码: $ f3 x; y$ @' |% X$ b/ `. {7 Xpublic static void findPairWithMinSumBruteForce(int arr{ if(arr.length解决方案2: 9 \0 a( U- J1 }+ Q排序数组。* 我们将维护两个索引,一个在开始(l=0),一个在结尾(r=n-1)2 |: b2 H$ m6 E0 x4 u' d
迭代直到 l , y& T' j4 W. j# e; \1 Bjava代码:& P. k, a: }5 T5 y- k
public static void findPairWithMinSum(int arr[]Sort the array,you can use any sorting algorithm to sort it Arrays.sort(arr); int sum=0; int minimumSum = Integer.MAX_VALUE; int n=arr.length; if(n时间复杂:O(NLogN)0 f0 S4 Q) z# J# H
最接近零的对的 Java 程序:9 f4 {$ d$ J, g- y v+ e" |5 G
package org.arpit.java2blog;import java.util.Arrays;public class findPairClosestToZero public static void main(String[] args) int array[]={1,30,-5,70,-8,20,-40、60}; findPairWithMinSumBruteForce(array); findPairWithMinSum(array); } public static void findPairWithMinSumBruteForce(int arr[]) if(arr.length当您操作程序时,您将获得以下输出:/ a% \% E+ H- D, a5 P' T
The pair whose sum is closest to zero using brute force method: 1 -5 The pair whose sum is closest to zero : -5 1