leetcode学习之路-Two Sum
来源:互联网 发布:怎么查看淘宝抢购排名 编辑:程序博客网 时间:2024/05/18 13:25
question1:Two Sum
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.
update:The return format had been changed to zero-based indices. Please read the above updated description carefully.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
Brute Force(O(N^2)):
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int i,j; for(i = 0; i < nums.size(); ++i) //vector没有length()方法,string有 { for(j = i+1; j < nums.size(); ++j) { if(nums[i] + nums[j] == target) return vector<int>{i,j}; //此处为列表初始化返回值(c++11),也可直接{i,j} } } return vector<int>{}; //也可直接return {} }};
One-Pass hashTable(O(N)):
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { map<int,int> hashMap; for(int i = 0; i < nums.size(); ++i) { if(hashMap.count(target - nums[i])) return {hashMap[target-nums[i]], i}; hashMap[nums[i]] = i; //map的下标运算符返回关键字-值对的值,此处将关键字设为vector的元素,值设为vector的下标 } return {}; }};
还有一种hashTable的方法,即先将所有元素都录入map,然后再遍历寻找target-nums[i]是否在map中。如果是,返回两个关键字的值。此处需要注意两个关键字不能相同,即hashMap[target-nums[i]] != i.所以,此方法输于One-Pass方法。
0 0
- leetcode学习之路-Two Sum
- leetcode之Two Sum
- LeetCode 之 Two Sum
- LeetCode之Two Sum
- LeetCode之Two Sum
- leetcode之two Sum
- leetcode之Two Sum
- leetcode 之Two Sum
- LeetCode 之 Two Sum
- LeetCode之Two Sum
- leetcode之two sum
- Leetcode之Two Sum
- leetcode之Two Sum
- leetcode之Two Sum
- leetCode之 Two Sum
- leetcode之two sum
- LeetCode之Two Sum
- Leetcode之 Two Sum
- RxJava操作符系列六
- Linux增加新盘挂载和分区-centOS和ubuntu
- maven项目eclipse热发布
- android 自定义view中onMeasure()
- jsp学习笔记(十二):jsp页面的格式化数字和时间
- leetcode学习之路-Two Sum
- jquery自定义方法学习
- 初识Servlet容器-Tomcat
- javascript常用开发笔记:一个简单强大的js日期格式化方法
- UIAlertController 添加 UITextField
- 如何判断一个数是否是素数呢?<小学生>
- 双指针Remove Element和Remove Duplicates from Sorted Array
- 解决ISE14.7在win10中不稳定的问题
- Java中的大数处理类BigInteger和BigDecimar浅析