Leetcode Algorithm 001. Two Sum
Two Sum
给定一个整形数数组,从中寻找两个数的和使得满足目标整数,返回它们的下标,一个数只能用一次,并且只有唯一解。
解题思路
此题较为简单,假设目标为整数
t
,只要遍历数组
代码与测试样例
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> indices;
int len = nums.size();
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (nums[i] + nums[j] == target) {
indices.push_back(i);
indices.push_back(j);
return indices;
}
}
}
return indices;
}
};
int main() {
int nums[4] = { 2, 7, 11, 15 };
int target = 9;
vector<int> v_nums(&nums[0], &nums[3]);
Solution s;
vector<int> indices = s.twoSum(v_nums, target);
if (indices.size() != 0) {
cout << "[" << indices[0] << ", " << indices[1] << "]" << endl;
} else {
cout << "No solution" << endl;
}
return 0;
}
输出
[0, 1]
知识点
许久没有用C++写程序,使用起来比较生疏了,这个程序要注意vector的使用。
vector的使用
// 空vector
vector<int> vec;
// 用数组赋值初始化
int arr[] = { 1, 2, 3, 4 };
vector<int> vec(&nums[0], &nums[3])
vector<int> vec(nums, nums+3)
// 添加元素
vec.push_back(5);
vector与数组类似都是可以用下标来索引,但是vector可以动态增长。