博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode:3sum closet
阅读量:4069 次
发布时间:2019-05-25

本文共 1229 字,大约阅读时间需要 4 分钟。

题目:给一个数组和给定的目标值,要求在数组里找出三个元素,这三个元素的和最接近目标值,当然等于是最好的。

用3sum的方法,把判定条件作些修改。

int twoSum(vector
&num, int start, int target){ if(num.size() < 3 || start >= num.size()) return -target; int head = start; int tail = num.size() - 1; int result = -target; int erro = 0x7fffffff; while (head < tail) { int sum = num[head] + num[tail]; if(sum == target) { result = target; return target; } else if(sum < target){ do { ++head; } while (head < tail && num[head] == num[head - 1]); } else { do { --tail; } while (tail > head && num[tail] == num[tail + 1]); } int curerro = abs(sum - target); if(curerro < erro) { result = sum; erro = curerro; } } return result;}int threeSumClosest(vector
&num, int target) { const int len = num.size(); if(len < 3) return 0; sort(num.begin(), num.end()); int closet = -target; int erro = 0x7fffffff; for (int i = 0; i < len - 2; ++i) { int thisloop = twoSum(num, i + 1, target - num[i]); if(thisloop == target - num[i]) return target; int cur_erro = abs(thisloop + num[i] - target); if(cur_erro < erro) { closet = thisloop + num[i]; erro = cur_erro; } while(i + 1 < len && num[i + 1] == num[i]) ++i; } return closet;}

转载地址:http://bglji.baihongyu.com/

你可能感兴趣的文章
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
uni-app 全局变量
查看>>
js判断空对象的几种方法
查看>>
java 不用递归写tree
查看>>
springboot2 集成Hibernate JPA 用 声明式事物
查看>>
fhs-framework jetcache 缓存维护之自动清除缓存
查看>>
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>