【LeetCode】16. 3Sum Closest
来源:互联网 发布:淘宝霸王条款 编辑:程序博客网 时间:2024/05/01 20:50
题目
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).
思路
对数组排序,先固定一个数,然后设置两个指针分别指向头和尾,计算和是否比当前最优解还要接近目标值。然后判断和与目标值的大小,进行指针的移动。复杂度
代码
class Solution {public: int sum(vector<int>& num){ int s=0; for (int n:num){ s += n; } return s; } int threeSumClosest(vector<int>& nums, int target) { int i=0,j,k; int n = nums.size(); if (n<=3) return sum(nums); sort(nums.begin(),nums.end()); int ans = nums[0]+nums[1]+nums[2]; for (int i=0;i<n-2;++i){ j=i+1;k=n-1; while (j<k){ int tsum = nums[i]+nums[j]+nums[k]; if (abs(target-tsum)<abs(target-ans)){ ans = tsum; if (ans==target) return ans; } tsum>target?k--:j++; } } return ans; }};
转载请注明原文地址
0 0
- LeetCode 16. 3Sum Closest
- LeetCode --- 16. 3Sum Closest
- [Leetcode] 16. 3Sum Closest
- 【leetcode】16. 3Sum Closest
- [leetcode] 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- LeetCode - 16. 3Sum Closest
- [LeetCode]16. 3Sum Closest
- LeetCode 16. 3Sum Closest
- LeetCode *** 16. 3Sum Closest
- Leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 【LeetCode】16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 【leetcode】16. 3Sum Closest
- leetcode 16. 3Sum Closest
- Hdu oj 1421 搬寝室(dp)
- CentOS 7.x 安装drupal 8
- Java开发中的23种设计模式详解(转)
- Css技术入门笔记02
- [Python]第三讲:数据类型
- 【LeetCode】16. 3Sum Closest
- 树形选择排序
- 还是畅通工程 HDU 1233
- 数据结构实验之链表七:单链表中重复元素的删除
- java多线程
- 通讯录-静态实现
- Objective-C 关于静态方法与实例方法
- 将流转换成字符串
- android 如何创建快捷小图标