【LeetNode2-1-9】Three sum closest--C++源代码(VS2015)

#include <iostream>
#include <math.h>
#include <unordered_map>
#include <vector>
using namespace std;

/*
three sum closest
*/

int min(int Num_A,int Num_B)
{
return Num_A > Num_B ? Num_B : Num_A;
}

void QuickSort(vector<int> &vec,int left,int right)
{
if (vec.size() <= 1)
return;
if (left > right)
return;
int first = left;
int last = right;
int key = vec[first];
while (first < last)
{
while (first < last && vec[last] > key)
{
last--;
}
vec[first] = vec[last];
while (first < last && vec[first] < key)
{
first++;
}
vec[last] = vec[first];
}
vec[first] = key;
QuickSort(vec, left, first - 1);
QuickSort(vec, first + 1, right);
}

int Solution(vector<int> &vec,const int target)
{
int result = -1;
if (vec.size() < 3)
return result;

vector<int>::iterator i = vec.begin();
vector<int>::iterator k=vec.end()-1;
result = abs(*i + *(i + 1) + *k - target);
i++;
for (; i != vec.end() - 2; i++)
{
if (i > vec.begin() && *i == *(i - 1))
continue;
vector<int>::iterator j = i + 1;
while (j < k)
{
if (*i + *j + *k < target)
{
result = min(result, abs(*i + *j + *k - target));
j++;
while (*j == *(j - 1) && j < k)
{
j++;
}
}
else if (*i + *j + *k > target)
{
result = min(result, abs(*i + *j + *k - target));
k--;
while (*k == *(k + 1) && j < k)
{
k--;
}
}
else
{
return 0;
}
}
}
return result;
}

int main()
{
int arr[] = { 2,4,6,8,1,3,5,7 };
vector<int> vec(&arr[0], &arr[8]);
QuickSort(vec,0,vec.size()-1);
int result = Solution(vec,22);
cout << "result is " << result << endl;
system("pause");
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
策略是一个很老的股票交易软件,包括行情接收、显示、技术指标、策略模拟等。功能很全,该有的都有,在当时也算是专业软件。 不知何故后来人家不再使用,也不再维护,就把源码放出来共享,一群好人啊!这是目前通过正常途径能够找到的最好的开源交易软件,也是最好的C++示例系统之一。无论您是有意从事股票/期货的自动交易,还是学习C++编程,读它的源码都是一个很好的开端,我就是这么做的。 策略最早的开发环境是VC6。我当时下的代码,最多升级到VS2003。据说能升到VS2005,我没试,但再往上肯定不行了。因为程序所用第三方控件库不支持更高版本的VS,这也是VS讨厌的地方。 后来我用QT编写自己的行情软件,就不再关注策略了。 最近兴趣重燃,发现网上有人家升级到VS2008的版本。原来的第三方控件库基本不再使用,功能及界面效果也大打折扣。未使用新的界面库,可以说程序变成了半成品,但这样也好,剩下的都是干货,更有利于研究和学习。无论如何,人家能升级到VS2008我还是很佩服的,做这个事的人应该是下了不少功夫,在此要表示感谢。 基于以前的积累,我对这些程序比较熟悉。在人家的基础上,我又做了点儿工作:把开发环境升级到了VS2015,改了几个错误,加了点儿小功能,加上了示例数据(让人一运行就能看到股票列表、技术图表和板块)。 传上来,谈不上共享精神,骗点儿积分。莫办法,有积分才能继续下载其它资源。 程序我在VS2015上已编译通过,这两天也一直在上面运行、修改。但不保证您的开发环境也能顺利通过,也许需要一些配置上的修改。如果您在编译过程中遇到问题,并不是我有意骗您,别生气,您可能需要点耐心,我要的1分也不多。 如果您使用其它的VS版本作为开发环境,可以去下载相应的版本,不用下载这个。据我所知,就CSDN上,从VC6到VS2010所有版本都有。 最后,祝您开发、学习有个好心情。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值