//1、有一个整数数组,请求出两两之差绝对值最小的值,
//记住,只要得出最小值即可,不需要求出是哪两个数。
//
//O(N+NlogN)解法
//排序
//区最小相邻差绝对值
//O(N+N)解法
//思路 设原数组为a[] = a1 a2 a3 a4 a5 a6 a7 a8
//得数组 b[a.length-1] = a1-a2 a2-a3 a3-a4 a5-a6 a6-a7 a7-a8//两个相邻数相减
//得C[] = min (|bi+ci-1|,|bi|) 最小连续子序列和
public class Problem101 {
static public void print(Object o){
System.out.println(o);
}
public static int cal(int[] iSrc){
int iBSrc[] = new int[iSrc.length];//
int i;
for ( i = 0; i<iSrc.length - 1 ; i++){//
iBSrc[i] = iSrc[i] - iSrc[i+1];
}
// for ( i = 0; i<iSrc.length -1; i++){
// System.out.print(iBSrc[i]+" ");
// }
// System.out.println("-------------B-----------");
int iCRs[] = new int[iSrc.length];
iCRs[0] = iBSrc[0];
int iMin = Math.abs(iBSrc[0]);
for ( i = 1; i<iSrc.length - 1; i++){
if (Math.abs(iBSrc[i] + iCRs[i - 1]) < Math
微软面试-101-有一个整数数组,请求出两两之差绝对值最小的值,
最新推荐文章于 2023-09-28 08:38:09 发布