请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

猿媛之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5618|回复: 1

数组中找出三个数,使得它们的和与给定的数字最接近

[复制链接]

554

主题

556

帖子

1938

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1938
发表于 2015-12-9 22:43:48 | 显示全部楼层 |阅读模式
  1. import java.util.Arrays;

  2. public class Test
  3. {
  4.         public static  int getThreeClose(int[] arr, int num)
  5.         {
  6.                 if(arr==null)
  7.                 {
  8.                         System.out.println("参数不合法");
  9.                         return -1;
  10.                 }
  11.                 Arrays.sort(arr);
  12.             int min = Integer.MAX_VALUE;
  13.                 int result = 0;         
  14.                 int len=arr.length;
  15.                 for (int i = 0; i < len; i++)
  16.                 {
  17.                         int low = i + 1;
  18.                         int high = len - 1;
  19.                         while (low < high)
  20.                         {
  21.                                 int sum = arr + arr[low] + arr[high];
  22.                                 int diff = Math.abs(sum - num);
  23.          
  24.                                 if(diff == 0)
  25.                                         return sum;
  26.                                 if (diff < min) {
  27.                                         min = diff;
  28.                                         result = sum;
  29.                                 }
  30.                                 if (sum <= num) {
  31.                                         low++;
  32.                                 } else {
  33.                                         high--;
  34.                                 }
  35.                         }
  36.                 }         
  37.                 return result;
  38.         }
  39.         
  40.         public static void main(String[] args)
  41.         {
  42.                 int[] arr={1,2,7,10,15};
  43.                 int result=getThreeClose(arr,20);
  44.                 System.out.println(result);
  45.         }
  46. }
复制代码

回复

使用道具 举报

554

主题

556

帖子

1938

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1938
 楼主| 发表于 2015-12-9 22:44:37 | 显示全部楼层
程序运行结果为:19
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|猿媛之家    

GMT+8, 2021-10-25 09:30 , Processed in 0.183887 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表