两数之和(二十二)
两数 二十二
2023-09-14 09:16:11 时间
题目:给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
例如:遍历数组a[1,2,3,4,5,6,7,8,9,10]中两数之和等于10的,所有数的索引.
//遍历数组a[1,2,3,4,5,6,7,8,9,10]中两数之和等于10的,所有数的索引.
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
using namespace std;
void sum(vector<int>& num, vector<int>& result, int target){
for(int i = 0; i < num.size(); i++){
for(int j = i+1; j < num.size(); j++){
if(num[i] + num[j] == target && i != j){
//printf("i = %d, j = %d\n",i,j);
result.push_back(i);
result.push_back(j);
}
}
}
}
void sum1(vector<int>& num, map<int, int>& result, int target){
for(int i = 0; i < num.size(); i++){
for(int j = i+1; j < num.size(); j++){
if(num[i] + num[j] == target && i != j){
//printf("i = %d, j = %d\n",i,j);
result.insert(make_pair(i, j));
}
}
}
}
void two_sum(vector<int>& num, unordered_map<int, int>& result, int target){
for(int i = 0; i < num.size(); i++){
for(int j = i+1; j < num.size(); j++){
if(num[i] + num[j] == target && i != j){
//printf("i = %d, j = %d\n",i,j);
result.insert(make_pair(i, j));
}
}
}
}
int main(){
vector<int> num = {1,2,3,4,5,6,7,8,9,10};
vector<int> vec_result;
map<int, int> map_result;
int target = 10;
cout << "size = " << num.size()<< endl;
#if 1
//1.vector way
sum(num, vec_result, target);
//
// while(vec_result.empty() != true){
// int i = vec_result.back();
// cout << i << " ";
// vec_result.pop_back();
// }
//
for(auto i : vec_result)
cout << i << " ";
#else
//2.map way: red and black tree, have sort.
map<int,int>::iterator it;
//sum1(num, map_result, target);
//
// for(it = map_result.begin(); it != map_result.end(); it++)
// cout << it->first << " : " << it->second << endl;
//auto
// for(auto i : map_result)
// cout << i.first << " : " << i.second << endl;
//3.unordered_map way: hashmap, Not sort.
unordered_map<int, int> un_map_res;
two_sum(num, un_map_res, target);
for(auto i : map_result)
cout << i.first << " : " << i.second << endl;
#endif
}
相关文章
- Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)
- Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)
- Java实现 LeetCode 1两数之和
- 两数之和——链表
- 算法练习之两数相加(链表保存的整数),罗马数字转整数,有效的括号,最长公共前缀
- 653. 两数之和 IV - 输入 BST(bfs)
- 1. 两数之和---双指针篇七
- leetcode之 两数之和
- Leetcode 两数之和
- 【1】两数之和【LeetCode】
- 【leetcode】leetcode2两数相加
- 【leetcode】leetcode1 两数之和
- 【C++】算法集锦(8):从两数和问题拓展到一百数和问题