从一个数组中查找和目标数最接近的或者相等的数
来源:互联网 发布:淘宝c店没有流量咋办 编辑:程序博客网 时间:2024/06/05 18:46
/**
* 查找出最接近目标值的数,并返回。
* @param array
* @param targetNum
* @return
*/
/**
* 求一个数组的最大值
* @param array1
*/
/**
* 求一个数组的最大值
* @param array1
*/
* 查找出最接近目标值的数,并返回。
* @param array
* @param targetNum
* @return
*/
public static int binarysearchKey(Object[] array, int targetNum) {//Object[] array = temp.clone();Arrays.sort(array);for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}int targetindex = 0;int left = 0,right = 0; for (right = array.length-1; left!=right;) {int midIndex = (right + left)/2;int mid = (right - left);int midValue = (Integer) array[midIndex];if (targetNum == midValue) {return midIndex;} if(targetNum > midValue){ left = midIndex; }else{ right = midIndex; } if (mid <=1) { break;}}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;}
public static void main(String[] args) {ArrayList array = new ArrayList();array.add(26);array.add(76);array.add(46);array.add(76);array.add(54);array.add(94);array.add(24);array.add(34);int targetNum= 74;System.out.println("和要查找的数:"+targetNum+ "最接近的数:"+binarysearchKey(array.toArray(), targetNum));}
/**
* 遍历数组和要查找的数值做差,以差:数组索引存为map,然后对以差为key的数组排序,拿到差最小的索引。
* @param array
* @param num
* @return
*/
public static Integer searchKey(int[] array,int num) { int[] temp = new int[array.length]; Map<Integer,Integer> map = new TreeMap<Integer,Integer>(); int disnum = 0; for (int i = 0; i < array.length; i++) { disnum = Math.abs(array[i] - num);temp[i]=disnum;map.put(disnum, i);} 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
*/
public static void max1(int[] array1) {int max = 0;for (int i : array1) {max = Math.max(max, i);}System.out.println("数组最大值是:"+max);}
/**
* 求一个数组的最大值
* @param array1
*/
public static void max2(int[] array1) {int max = 0;for (int i = 0; i < array1.length; i++) {max = max > array1[i] ? max : array1[i];}System.out.println("数组最大值是:"+max);}
/**
* 求一个数组的最大值
* @param array1
*/
public static void max3(int[] array1) {Arrays.sort(array1);System.out.println("数组最大值是:"+array1[array1.length-1]);}
- 从一个数组中查找和目标数最接近的或者相等的数
- 查找和目标数最接近的或者相等的数
- java折半查找法 查找数组中与目标数最接近的数
- 二分法之查找最接近目标数的数
- 最接近目标的三数和
- 给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------递归
- 3Sum Closest 3个数字的和等于或者最接近与目标数
- 从一个无序的数组中查找遗漏的数
- 数组中最接近N的数
- 求无序数组中三个元素相加与目标数最接近的三元素之和
- 打印三个数相加和最接近目标整数的组合
- 给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------用递归法实现的。。。。。。
- 在一个数组中删除所有的和给定数相等的元素
- 1.11.1二分查找最接近的数
- LeetCode 3Sum Closest 最接近目标数的三个数和
- C++实现LeetCode(三个数的和最接近目标数)
- 从一个无序的数组中查找二个遗漏的数
- 【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都按照从左到右的递增的顺序排序,输入这样的一个数组和一个数,判断数组中是否包含这个数
- Android入门:使用Android自带媒体库读取MP3文件
- 墙壁光缆铺设
- 大学三年半的总结
- Spring MVC 监听文件上传进度,实现上传进度条
- H.264/5
- 从一个数组中查找和目标数最接近的或者相等的数
- 进度条
- mongodb启动出现 无法定位程序输入点
- Android 应用播放背景音乐
- google tcmalloc WIN下使用
- PN512
- 在Android应用中使用百度地图api
- 在asp.net中配置并使用CKEdit
- MyEclipse各种版本注册码