leetcode 16. 3Sum Closest
来源:互联网 发布:买书哪个网站好 知乎 编辑:程序博客网 时间:2024/05/01 06:13
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.
一个S数组有n个整型数,找到三个数,这三个数的和最接近给定的目标数。返回这三个数的和。
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).方法一:
用三重循环找,但是超时了
int threeSumClosest(int* nums, int numsSize, int target) { int i,j,k; int sum=INT_MAX; for(i=0;i<numsSize-2;i++) { for(j=i+1;j<numsSize-1;j++) { for(k=j+1;k<numsSize;k++) { if(abs(nums[i]+nums[j]+nums[k]-target)< abs(sum-target)) { sum=nums[i]+nums[j]+nums[k]; } } } } return sum;}
方法二:
将这个数组的数先排序。
找三个数中的第一个数仍然利用循环(i);其他两个数分别利用两个指针,分别指向
#include<stdio.h>#include<stdlib.h>/** * Return an array of arrays of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */int threeSumClosest(int* nums, int numsSize, int target) { //排序 int i,j; int tem; for(i=0;i<numsSize-1;i++) { for(j=0;j<numsSize-i-1;j++) { if(nums[j]>nums[j+1]) { tem=nums[j]; nums[j]=nums[j+1]; nums[j+1]=tem; } } } int k; int resum,diff,difmin=INT_MAX; //resum 最终要返回的和;diff 每次三个数与target的差值的绝对值;difmin 最小差值 //最外面一层循环找到第一个数;循环里面利用两个指针指向第二个数和第三个数 for(i=0;i<numsSize-2;i++) { j=i+1; k=numsSize-1; while(j<k) { diff=abs(nums[i]+nums[j]+nums[k]-target); if(diff==0)//差值为0,说明有三个数的和等于target return target; if(diff<difmin) //本次差值比上次差值小 { resum=nums[i]+nums[j]+nums[k]; difmin=diff; } if(nums[i]+nums[j]+nums[k]>target) k--; else j++; } } return resum; }void main(){int nums[]={-1, 2, 1, -4};int numsSize=4;int returnS = threeSumClosest(nums, numsSize, 2) ;}
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
- Mybatis generator插件编写
- MIPI DSI协议介绍
- centos 设置定时任务执行指定脚本
- 关于web项目中中文乱码问题
- matlab的使用基本知识总结
- leetcode 16. 3Sum Closest
- JAVA面试题《下》
- C++实验6——数组操作
- 第9周项目3-人数不定的工作类
- Android点九图注意事项
- 实现电商平台从业务到架构的治理体系
- linux常用命令
- 四:资讯列表实现(借助PullToRefres实现上拉和下拉刷新) (下)
- 内部类