Leetcode---1.Two Sum
来源:互联网 发布:linux网盘源码 编辑:程序博客网 时间:2024/06/06 15:40
Description:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].分析:
给定一个数组nums和target,求数组中的两个数使得之和为target,并返回其索引。
方法一:暴力枚举法
思路很简单,将所有可能的组合进行判断,返回满足条件组合的索引,其时间复杂度为O(n^n)
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ret(2,-1); int size=nums.size(); for(int i=0;i<size-1;i++){ for(int j=i+1;j<size;j++){ int sum=nums[i]+nums[j]; if(sum==target){ ret[0]=i; ret[1]=j; } } } return ret; }};
方法二:哈希表
将数组转换为哈希表,通过查找target-nums[i]来确定组合。注意这里将数组的元素作为key,索引作为value,因为我们想要得到的数组索引。这样只需要遍历一次数组,算法的时间复杂度为O(n)。
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ret(2,-1); //将数组的元素作为Key,索引作为value unordered_map<int,int> m; int size=nums.size(); //将整个数组转换为哈希表 for(int i=0;i<size;i++){ m[nums[i]]=i; } //查找target-nums[s]是否存在 for(int i=0;i<size;i++){ const int gap=target-nums[i]; if(m.find(gap)!=m.end()&&m[gap]>i){ ret[0]=i; ret[1]=m[gap]; break; } } return ret; }};
阅读全文
0 0
- LeetCode 1. Two Sum
- [LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- LeetCode --- 1. Two Sum
- [Leetcode] 1. Two Sum
- leetcode---1.Two sum
- [Leetcode] 1. Two Sum
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- LeetCode 1.Two Sum
- 【LeetCode]1.Two Sum
- LeetCode 1.Two Sum
- leetcode 1. Two Sum
- [leetcode] 1. Two Sum
- leetcode 1. Two Sum
- Leetcode- 1. Two Sum
- LeetCode-1.Two Sum
- Leetcode 1. Two Sum
- CodeForces
- bzoj2064分裂
- 针对stm32 DMA传输AD数据,在完成中断后如何复位的问题的思考
- LFS+XShell
- Python自然语言处理(NLP)入门教程(NLTK库的安装和使用)
- Leetcode---1.Two Sum
- lnmp环境搭建
- 初恋
- c语言中auto、register、extern、static用法
- 算法设计周记(四)--回溯
- js快速排序
- canvas入门学习
- C与C++中输入字符串的方法
- 传输层两大协议:TCP与UDP详解(两者的联系与区别)