use*_*603 2 java arrays algorithm
输入是[4,13,14,15,16].输出应该是[16,15]和[14,13,4].
我可以想到以下算法在哪里
public class TestMinDiff {
public static void main(String[] args) {
Integer[] array = {4,13,14,15,16};
Arrays.sort(array, Collections.reverseOrder());
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
int list1Sum = 0;
int list2Sum = 0;
for(int i: array) {
if(list1Sum<=list2Sum) {
list1Sum = list1Sum + i;
list1.add(i);
} else {
list2Sum = list2Sum + i;
list2.add(i);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是
[16,13,4].[15,14].看起来我的算法需要进一步改进.对我而言,这似乎是一个NP问题.但我无法想到这里给出输出[16,15]和算法的算法
[14,13,4].