3 sum closest
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
    For example, given array S = {-1 2 1 -4}, and target = 1.
    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
找到数组中跟目标数最接近的三个数的和 。
这里也是三个数的和问题,经过上一题三个数的和,这一题结果只有一个,也会有重复数字出现,需要处理,当然了,这里只要找到近似的和,不处理重复不影响结果。。
        这里也是遍历数组,然后在剩下的数组中依次遍历(两端向中间),每次遍历都会产生一个三数之和,如果该和大于target,则需要右边指针向左移动,反之左边向右移动。同时也要判断此时的和与target之间的距离跟result与target之间距离的大小。
class Solution {
    public int threeSumClosest(int[] nums, int target) {
        /**
        这里也是三个数的和问题,经过上一题三个数的和,这一题结果只有一个,也会有重复数字出现,需要处理,当然了,这里只要找到近似的和,不处理重复不影响结果。。
        这里也是遍历数组,然后在剩下的数组中依次遍历(两端向中间),每次遍历都会产生一个三数之和,如果该和大于target,则需要右边指针向左移动,反之左边向右移动。同时也要判断此时的和与target之间的距离跟result与target之间距离的大小。
        */
        //初始一个三个元素的和的变量,下面计算三个数的和时要和这个以及target之间的差值作比较
        int result=nums[0]+nums[1]+nums[nums.length-1];
        Arrays.sort(nums);
        for(int i=0;i<nums.length-2;i++){
                //两个数的和与sum最接近就行
                int left=i+1,right=nums.length-1;
                while(left<right){
                   int sum=nums[i]+nums[left]+nums[right];
                    if(sum>target) right--;
                    else left++;
                    if(Math.abs(result-target)>Math.abs(sum-target))
                        result=sum;
                }
        }
        return result;
    }
}
3 sum closest的更多相关文章
- Lintcode: Subarray Sum Closest
		Given an integer array, find a subarray with sum closest to zero. Return the indexes of the first nu ... 
- Subarray Sum Closest
		Question Given an integer array, find a subarray with sum closest to zero. Return the indexes of the ... 
- 3 Sum Closest 解答
		Question Given an array S of n integers, find three integers in S such that the sum is closest to a ... 
- [leetcode]3 Sum closest
		问题叙述性说明: Given an array S of n integers, find three integers in S such that the sum is closest to a ... 
- 1. Two Sum + 15. 3 Sum + 16. 3 Sum Closest + 18. 4Sum + 167. Two Sum II - Input array is sorted + 454. 4Sum II + 653. Two Sum IV - Input is a BST
		▶ 问题:给定一个数组 nums 及一个目标值 target,求数组中是否存在 n 项的和恰好等于目标值 ▶ 第 1题,n = 2,要求返回解 ● 代码,160 ms,穷举法,时间复杂度 O(n2), ... 
- (hash map)Two Sum, sorted(排序+双指针)closest,小于或大于的对数,组成不同的对数
		原版 sorted [抄题]: [思维问题]: 存sum - nums[i](补集),若出现第二次则调出 [一句话思路]: hashmap中,重要的数值当做key,角标当做value. [画图]: [ ... 
- No.016 3Sum Closest
		16. 3Sum Closest Total Accepted: 86565 Total Submissions: 291260 Difficulty: Medium Given an array S ... 
- 3Sum Closest & 3Sum Smaller
		Given an array S of n integers, find three integers in S such that the sum is closest to a given num ... 
- [leetcode]_K Sum 问题
		问题:K Sum问题是一个问题系列,在一个数组中找K个数的和能够满足题目中要求.从2 Sum 到 3 Sum , 3 Sum Clozet , 4 Sum..解法虽一开始不容易想到,但get到解题技能 ... 
随机推荐
- FFmpeg示例程序合集-Git批量获取脚本
			此前做了一系列有关FFmpeg的示例程序,组成了<FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player: 最简单的 ... 
- javascript之事件模型
			事件模型 冒泡型事件(Bubbling):事件由叶子节点沿祖先节点一直向上传递到根节点 捕获型事件(Capturing):由DOM树最顶元素一直到最精确的元素,与冒泡型事件相反 DOM标准事件模型:D ... 
- UNIX网络编程——信号驱动式I/O
			信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程. 针对一个套接字使用信号驱动式I/O,要求进程执行以下3个步骤: 建立SIGIO信号的信号处理函数. 设置 ... 
- Linux内核2.6的进程调度
			Linux是多任务抢占操作系统,多任务就是指多个进程间通过分时切换来并发执行.非抢占的系统是对每个进程而言,除非时间片用完或主动放弃否则不会被剥夺CPU,主动放弃包括调用一些调度的系统调用( ... 
- 重载重写重定义-易混淆概念-C++编译器处理方式
			1.函数重载 1)必须在同一个类中进行. 2)子类无法重载父类的函数,父类同名函数将被名称覆盖 3)重载是在编译期间根据参数类型和个数决定函数调用 2.函数重写 1)必须发生于父类与子类之间 2)并且 ... 
- c#一些特殊语法
			1.using 语法 using不仅可以作为导入包,重命名类名.还可以释放资源 using (Pen gridLinePen = new Pen(Color.red)) { e.Graphics.Dr ... 
- 【Android 系统开发】Android JNI 之 JNIEnv 解析
			. jni.h文件 : 了解 JNI 需要配合 jni.h 文件, jni.h 是 Google NDK 中的一个文件, 位置是 $/android-ndk-r9d/platforms/android ... 
- (五十五)iOS多线程之GCD
			GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ... 
- python面向对象小练习
			就是几个动物,自动排列生成什么的 class Animal(object): def __init__(self,name,weight): self.name = name self.weight ... 
- Oracle EBS BOM模块常用表结构
			表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM_ID NUMBE ... 
