此文**部落格 自己學習標記下,感謝博主。
/*** 查詢出最接近目標值的數,並返回。
* @param array
* @param targetnum
* @return*/
[html]view plain
copy
public static int binarysearchkey(object array, int targetnum)
int targetindex= 0
; int left= 0
,right= 0
;
for (right
= array
.length-1; left!=right;)
if(targetnum >
midvalue)else
if (mid <
=1)
} int rightnum
= ((integer) array[right]).intvalue();
int leftnum
= ((integer) array[left]).intvalue();
int ret
= math
.abs((rightnum - leftnum)/2)
>
math.abs(rightnum -targetnum) ? rightnum : leftnum;
system.out.println("和要查詢的數:"+targetnum+ "最接近的數:" + ret);
return ret;
}
[html]view plain
copy
public static void main(string args)
/*** 遍歷陣列和要查詢的數值做差,以差:陣列索引存為map,然後對以差為key的陣列排序,拿到差最小的索引。
* @param array
* @param num
* @return
*/[html]view plain
copy
public static integer searchkey(int array,int num)
system.out.println("陣列和的差值和陣列元素的差值相減的絕對值和位置的對映結果:" + map);
arrays.sort(temp);
integer index
= map
.get(temp[0]);
system.out.println("陣列和的差值和陣列元素的差值相減的絕對值最小值:"+temp[0]+"最小值的key:" + array[index]);
return (integer) array[index];
}
/*** 求乙個陣列的最大值
* @param array1
*/[html]view plain
copy
public static void max1(int array1)
system.out.println("陣列最大值是:"+max);
}
/*** 求乙個陣列的最大值
* @param array1
*/[html]view plain
copy
public static void max2(int array1)
system.out.println("陣列最大值是:"+max);
}
/*** 求乙個陣列的最大值
* @param array1
*/[html]view plain
copy
public static void max3(int array1)
//計算最小值
private bigdecimal calminvalue(bigdecimal arrays)}}
for(int n=0;n
return temp;
}
最接近目標數的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。本題只需要對上一題求三數之和進行少許的修改即可。思路 仍採用雙指標的思路,只不過需要記錄每次移動過程 現的最近的值...
最接近的數
有乙個正整數,請找出其二進位制表示中1的個數相同 且大小最接近的那兩個數。乙個略大,乙個略小 給定正整數int x,請返回乙個vector,代表所求的兩個數 小的在前 保證答案存在。測試樣例 2 返回 1,4 思路 以給出的數為基礎,先將給出的數的二進位制中有幾個1判斷出來,然後再分別判別當前數左邊...
16 。最接近的三數和
16.最接近的三數之和 給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的...