Leetcode系列(#1 Tow Sum)
来源:互联网 发布:融资融券的数据怎样看 编辑:程序博客网 时间:2024/06/07 23:27
**
Leetcode系列(#1 Tow Sum)
**
初次开始写leetcode的代码,自己完全不是什么大神,只是希望通过这种每天记录的方式,把自己学到的东西写一写,促进自己学习,同时也发出来求大家指正,相互学习!
LeetCode的第一题就是Tow Sum,虽然标记是medium的难度,但是还算是比较容易。
题目大意就是输入一个数组和目标(target),在数组中找到两个相加等于这个target的数,并且返回他们的下标。比如输入numbers={2,7,11,15}, target=9,则输出下标1,2(这里已经设置下标从1开始,而不是从0开始)
有两种方法可以解决这个问题。
第一种是最直接的方法:对数组排序的方法
vector<int> twoSum(vector<int>& nums, int target) { int a=0; int n=nums.size(); int b=n-1; vector<int> numbers=nums; vector<int> result; sort(numbers.begin(),numbers.end()); while (a<n) { if (numbers[a]+numbers[b]>target) b--; else if(numbers[a]+numbers[b]<target) a++; else break; } for (int i=0; i<n; ++i) { if (nums[i]==numbers[a]) result.push_back(i+1); else if(nums[i]==numbers[b]) result.push_back(i+1); } if (result[0]>result[1]) swap(result[0], result[1]); return result;}
这种方法比较直观,现排序,然后对两个下标调整。算法复杂度为O(n*log n).
第二种方法是用map的方法:
vector<int> twoSum(vector<int>& nums, int target) { map<int,int> M; for (int i=0;i<nums.size(); i++) { if(M.find(target-nums[i])!=M.end()) return {M[target-nums[i]]+1, i+1}; M[nums[i]]=i; } return {0};}
这是利用了map的方法,把数组的值作为key,数组的下标作为value,通过find()来找到相应的值。算法复杂度为O(n)。
补充几个关于map的相关知识点:
map是C++中的一个标准容器,它提供了一一对应的关系。
1.map的构造
map <int,int> M;map<int,string> M;
2.map的插入
M.insert(123,234);M.insert(123,"hello world");M[index]=value;
3.map的查找
M.find();
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
example:
if(M.find(nums[i])!=M.end())
find() 函数没有找到的话即返回end()。
1 0
- Leetcode系列(#1 Tow Sum)
- LeetCode 1---Tow Sum
- LeetCode: Tow Sum (JavaScript)
- LeetCode : Tow Sum [java]
- leetcode-001 tow sum
- [leetcode]Tow Sum(java)
- [LeetCode]--Tow Sum
- leetcode 1. Tow Sum
- 1 Tow Sum
- leetcode 001 Tow Sum(java)
- LeetCode:Tow Sum程序以及分析
- 经典算法面试题系列(一)——tow sum
- leetcode: Add Tow Numbers
- leetcode-Add Tow Numbers
- 【面试准备】letcode-Tow Sum
- leetcode【1+167 Two Sum 系列】【python】
- 《Leetcode系列》C++实现:1-two sum
- leetcode系列(29)Two Sum
- 强大的矩阵奇异值分解(SVD)及其应用
- 欢迎使用CSDN-markdown编辑器
- 一些android笔记
- python下划线变量的含义
- ProGuard基础语法和打包配置
- Leetcode系列(#1 Tow Sum)
- 英伟达硬件解码器分析
- C++编程思想重点笔记(上)
- [JShop]Spring MVC的RequestContextHolder使用误区
- MyISAM和InnoDB的行格式ROW_FORMAT_
- Linux pipe函数
- Android学习方法-----心得
- do_IRQ
- c#小知识