// Given nums = [2, 7, 11, 15], target = 9, // Because nums[0] + nums[1] = 2 + 7 = 9, // return [0, 1]. #include <iostream> #include <vector> int GetIndexByValue(const std::vector<int> &inArr, int value, int startIndex) { for (int i = startIndex; i < inArr.size(); ++i) { if (value == inArr[i]) { return i; } } return -1; } std::vector<int> GetIndicesOf2Addons(const std::vector<int> &inArr, int target) { for (int i = 0; i < inArr.size(); ++i) { int _2ndAddon = target - inArr[i]; int indexOf2ndAddon = GetIndexByValue(inArr, _2ndAddon, i + 1); if (indexOf2ndAddon < 0) { std::cout << "Failed to find: " << _2ndAddon << "\n"; continue; } return std::vector<int> {i, indexOf2ndAddon}; } return std::vector<int>(0); } int main(int argc, char const *argv[]) { std::vector<int> nums { 2, 3, 11, 15, -2 }; int target = 4; std::vector<int> result = GetIndicesOf2Addons(nums, target); if (result.empty()) { std::cout << "Failed.\n"; return -1; } for (auto i: result) { std::cout << i << "\t"; } std::cout << "\n"; return 0; } // g++ two_sum.cpp -std=c++11 && ./a.out
Two Sum:给出一个整数数组,返回两个数的下标值,令其和等于一个指定的目标值 #Leetcode
原文:https://www.cnblogs.com/xiaochou/p/13623930.html