LeetCode-Two Sum
2015-11-28 18:39
302 查看
一直在写LeetCode,现在也是把以前拿C++写过的题传上来,供大家参考。
原题链接:点击打开链接
class Solution
{
public:
vector<int> twoSum(vector<int>& numbers, int target)
{
vector<int> tmpNumbers(numbers.begin(), numbers.end());
sort(tmpNumbers.begin(), tmpNumbers.end());
int val1 = -1;
int val2 = -1;
int i = 0;
int j = tmpNumbers.size() - 1;
// find two numbers added equals to target
while(i < j)
{
if((tmpNumbers[i] + tmpNumbers[j]) < target)
{
i++;
}
else if((tmpNumbers[i] + tmpNumbers[j]) > target)
{
j--;
}
else
{
val1 = tmpNumbers[i];
val2 = tmpNumbers[j];
break;
}
}
vector<int> result;
// find the index of the two numbers
for(int i = 0; i < numbers.size(); i++)
{
if(numbers[i] == val1 || numbers[i] == val2)
{
result.push_back(i + 1);
}
if(2 == result.size())
{
return result;
}
}
return result;
}
};
原题链接:点击打开链接
class Solution
{
public:
vector<int> twoSum(vector<int>& numbers, int target)
{
vector<int> tmpNumbers(numbers.begin(), numbers.end());
sort(tmpNumbers.begin(), tmpNumbers.end());
int val1 = -1;
int val2 = -1;
int i = 0;
int j = tmpNumbers.size() - 1;
// find two numbers added equals to target
while(i < j)
{
if((tmpNumbers[i] + tmpNumbers[j]) < target)
{
i++;
}
else if((tmpNumbers[i] + tmpNumbers[j]) > target)
{
j--;
}
else
{
val1 = tmpNumbers[i];
val2 = tmpNumbers[j];
break;
}
}
vector<int> result;
// find the index of the two numbers
for(int i = 0; i < numbers.size(); i++)
{
if(numbers[i] == val1 || numbers[i] == val2)
{
result.push_back(i + 1);
}
if(2 == result.size())
{
return result;
}
}
return result;
}
};
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例