融邦JAVA面试题
技术界的小学生:
第五题: 笨做法,供参考
import java.util.Arrays;
/**
*
* N个重量不等的橡皮泥小球,假设将两个小球捏在一起的力(F)为两个小球质量的和。拿出两个小球捏到一起后放回,
* 重复上述操作,直到只捏剩一个球。如何才能让,上述力(F)最小?
*
* N个球
*
*F = M1+M2
*
* 每次都排序,最小的两个相加,放入新数组中,新数组再排序,再拿两个最小的相加,如此重复。
比如 数组a{1,2,3,4}
第一次 排好序,拿到前两个最小的数相加 1+2 =3, 然后放入新数组,新数值为{3,3,4} ,重复上述步骤,给{3,3,4}排序,拿到2个最小的数相加 3+3= 6,放入新数组,故新数组为{6,4} 到这一步已经完成。
*
* **/
public class Test6 {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4};
int[] a = fMin(arr);
}
public static int[] fMin (int[] arr){
//剩下2个以内就不捏了,有3个以上的小球才捏。
if(arr.length< 3 ){
return arr;
}
//排序
Arrays.sort(arr);
int[] arr2 = new int[arr.length-1];
//最小的两个数相加给新数组
arr2[0] = arr[0]+arr[1];
// 老数组的值给新数组
for(int i = 2 ;i |