twoSum(C++)

 1 vector<int> twoSum(vector<int> &numbers, int target)
 2 {
 3     //Key is the number and value is its index in the vector.
 4     unordered_map<int, int> hash;  //unordered_map是无序关联容器
 5     vector<int> result;
 6     for (int i = 0; i < numbers.size(); i++) {
 7         int numberToFind = target - numbers[i];
 8
 9             //if numberToFind is found in map, return them
10         if (hash.find(numberToFind) != hash.end()) {  //find()返回一个迭代器,指向区间[first,last](hash的序号)中第一个值为value的元素,如果没有找到就返回last
11                     //+1 because indices are NOT zero based
12             result.push_back(hash[numberToFind] + 1);//push_back(t)将t插到a.end()前面
13             result.push_back(i + 1);
14             return result;
15         }
16
17             //number was not found. Put it in the map.
18         hash[numbers[i]] = i;
19     }
20     return result;
21 }

无序关联容器有:unordered_set     unordered_multiset      unordered_map        unordered_multimap,它们使用键和哈希表,以便能够快速存取数据。没有了有序关联容器的lower_bound 和upper_bound,所比较基于等于概念。

时间: 2024-10-11 10:43:06

twoSum(C++)的相关文章

leetcode——Two Sum 两数之和(AC)

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

leetcode 1 Two Sum(查找)

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

LeetCode OJ_题解(python):001-Two Sum 【Array】【Easy】

题目: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. 输入一个数组和target,要在一个数组中找到两个数字,其和为t

Leetcode(18)-四数之和

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组. 注意: 答案中不可以包含重复的四元组. 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0. 满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ] 思路:

leecode刷题(8)-- 两数之和

leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路: 这道题其实很简单,我们可以直接用暴力搜索的方法,设置双重

Leetcode(1)两数之和

Leetcode(1)两数之和 [题目表述]: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 第一种方法:暴力 执行用时:5352 ms: 内存消耗:12.9MB 效果:非常差 class Solution(object): def twoSum(self, nums, target): """ :type nums:

LeetCode 1. 两数之和(python3)实现

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum # 最

刷题--双指针(2)

Two Sum类 首先是基本的Two Sum题解 用hashmap 时间复杂度O(n),空间复杂度O(n),每一次首先找hashmap中有没有target - nums[i], 如果没有将nums[i]入map 用双指针法,时间复杂度O(n + nlogn), 空间复杂度O(1) 首先要对数组进行排序,如果要求的是返回两个数的索引,那么就不能用这个方法 例 lintcode  56. Two Sum https://www.lintcode.com/problem/two-sum/descrip

LeetCode每日一题(三)

1.两数之和 题目: 给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 思路: 由于哈希查找的时间复杂度为O(1),可以利用map降低时间复杂度. 根据与target的差对数组中的数字进行映射,当出现和为target的一组数时,马上就可以返回这组数. class Solution { public int[] twoSum(int[] nums, in